Ich weiß, dass es mehrere andere Posts darüber gibt, aber mein Fall ist irgendwie spezifisch, ich habe diesen noch nicht gesehen.SKSpriteNode reagiert nicht auf set color & blendModeFactor (SpriteKit & Swift)
Ich habe in meinem Spiel einen ballförmigen Sprite, dass, wenn ich ihn anklicke, ich eine kolorierte Version des gleichen Sprites hinzufügen möchte, aber mit einem Effekt von fadeIn und fadeOut.
Möchten Sie ein Beispiel-Code geben:
self.ball = SKSpriteNode(imageNamed: "ball")
self.ball.position = CGPoint(x: midX, y: midY)
self.ball.zPosition = 1
self.ball.size = CGSize(width: 100, height: 100)
self.touchEffect = SKSpriteNode(imageNamed: "ball")
self.touchEffect.position = CGPoint(x: 0, y: 0)
self.touchEffect.zPosition = 2
self.touchEffect.size = CGSize(width: 100, height: 100)
self.touchEffect.color = UIColor.whiteColor()
self.touchEffect.blendColorFactor = 1
self.touchEffect.alpha = 0
self.ball.addChild(self.touchEffect)
self.addChild(self.ball)
nun bis zu diesem Punkt ... Ich kann nicht einmal die touchEffect Sprite sehen colorised (wenn ich alpha zu 1 gesetzt), aber das gleiche Farbe des ursprünglichen Sprites. Warum ist das?
Am touchesBegan ich etwas wie folgt aus:
func showTapEffect() {
let fadeIn = SKAction.fadeInWithDuration(0.3)
let fadeOut = SKAction.fadeOutWithDuration(0.3)
let sequence = SKAction.sequence([fadeIn,fadeOut])
self.touchEffect.runAction(sequence)
}
habe ich es auch in verschiedenen Szenarien in meinem gleichen Spiel, und es funktionierte. Ich weiß nicht, warum dieser einzigartige Fall nicht funktioniert. Irgendein Hinweis? Wenn Sie mehr Beispielcode benötigen, lassen Sie es mich wissen, es ist keine Kopie des aktuellen Codes tho, ich tippte es einfach aus meinem Speicher, damit Sie dort vielleicht einen Schreibfehler sehen. Aber der Code ist sehr ähnlich.
(Und mein Sprit ist nicht dunkel oder schwarz)
Vielen Dank im Voraus.
Haben Sie es versucht? eine andere Farbe als Weiß? – 0x141E
Position ist relativ, machen Touch-Effekt CGPoint.zero (midX * 2 bedeutet Ball Touch-Effekt ist außerhalb des Bildschirms) – Knight0fDragon
ja ich versuchte redColor zu, aber nicht funktioniert @ 0x141E – msqar