Bei der Verwendung von SKCropNode wollte ich das Bild, das ich zum cropNode hinzufüge, um jeden einzelnen Pixel-Alpha-Wert entsprechend dem entsprechenden Pixel-Alpha-Wert der Maske anpassen.SKCropNode Seltsames Verhalten
Nach vielen Recherchen kam ich zu dem Schluss, dass die Alpha-Werte des Bildpixels sich nicht an die Maske anpassen würden, aber nachdem ich mein Projekt fortgesetzt hatte, bemerkte ich, dass die Pixel eines bestimmten cropNode-Bildes tatsächlich verblassten zum Maskenpixel Alpha-Wert ??? Was großartig war! Aber nachdem ich dies reproduziert habe, weiß ich nicht, warum es das tut?
import SpriteKit
var textureArray: [SKTexture] = []
var display: SKSpriteNode!
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
anchorPoint = CGPointMake(0.5, 0.5)
backgroundColor = UIColor.greenColor()
fetchTexures()
display = SKSpriteNode()
let image = SKSpriteNode(texture: textureArray[0])
display.addChild(image)
let randomCropNode = SKCropNode()
display.addChild(randomCropNode)
let cropNode = SKCropNode()
cropNode.maskNode = display
let fill = SKSpriteNode(color: UIColor.whiteColor(), size: frame.size)
cropNode.addChild(fill)
cropNode.zPosition = 10
addChild(cropNode)
}
func fetchTexures() {
var x: Int = 0
while x < 1 {
let texture: SKTexture = SKTextureAtlas(named: "texture").textureNamed("\(x)")
textureArray.append(texture)
x += 1
}
}
}
Der obige Code gibt mir meine gewünschte Wirkung, aber wenn Sie die unten entfernen, werden die Bildpixel Alpha-Werte nicht mehr in Übereinstimmung mit der Maske einstellen ?? Der folgende Code wird nicht wirklich in meinem Projekt verwendet, aber es ist die einzige Möglichkeit, den Pixel-Alpha-Wert anzupassen.
Kann jemand sehen, was dieses Verhalten verursacht, oder wenn es eine bessere Weise gibt, meinen gewünschten Effekt zu erhalten?
Maske:
Ergebnis:
Wenn entfernen:
let randomCropNode = SKCropNode()
display.addChild(randomCropNode)
Ergebnis:
Das Verhalten Ich erhalte tatsächlich ist es ist die Anpassung an das Pixel Alpha-Wert, wenn meine Maske Pixel Alpha-Wert von 0,25 ist, mein Bildpixel Alpha-Wert auf 0,25 gehen, vor, während, wenn der Maskenwert war 0,25 würde der Bildwert 1,0 sein.Wenn ich den randomCropNode hinzufüge, bekomme ich meinen gewünschten Effekt, aber von dem, was ich im Internet gelesen habe, sollten sich die Pixel des Bildes nicht an die Maske anpassen. Tut mir leid, das macht wahrscheinlich keinen Sinn. Grundsätzlich möchte ich, dass sich die Pixel an die Maske anpassen, aber ich bin mir nicht sicher, warum das nur in diesem Fall geschieht. – Jarron
Wie ich schon sagte, kann es sein, dass Sie Ihre Maske einfach als normale Textur rendern, anstatt eine Maske zu sein – Knight0fDragon
Entschuldigung, ich verstehe, was Sie sagen, aber nein, ich werde das Bild in Kürze anhängen. Das Bild ist 4 Schattierungen von Schwarz und dann füge ich eine weiße Füllung hinzu und es wird zu 4 Schattierungen von Weiß. – Jarron