ios swift sprite-kit skspritenode

ios - Agregar un efecto visual a un SKSpriteNode cuando se presiona



swift sprite-kit (2)

Estoy trabajando en mi primera aplicación SpriteKit en Xcode 6, codificación en Swift. Ahora he creado algunos bonitos botones a partir de archivos png transparentes. Pero estoy tratando de mostrar un efecto visual cuando se presiona el botón.

Ejemplo de cómo ahora muestro un botón estático:

let playButton = Button(imageNamed:"playButton") playButton.position = CGPointMake(self.size.width/2, self.size.height/2 - playButton.size.height * 2.5 - displacement) self.sharedInstance.addChildFadeIn(playButton, target: self)

Cualquier efecto sería suficiente, tal vez un efecto de pulso o brillo en la prensa. He buscado, pero realmente no puedo encontrar nada en Swift.

editar: más información

class Button: SKSpriteNode { init(imageNamed: String) { let texture = SKTexture(imageNamed: imageNamed) // have to call the designated initializer for SKSpriteNode super.init(texture: texture, color: nil, size: texture.size()) } override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { self.runAction(SKAction.scaleTo(1.3, duration: kButtonFadingSpeed)) } override func touchesMoved(touches: NSSet, withEvent event: UIEvent) { self.runAction(SKAction.scaleTo(1.3, duration: kButtonFadingSpeed)) } override func touchesEnded(touches: NSSet, withEvent event: UIEvent) { self.runAction(SKAction.scaleTo(1.0, duration: kButtonFadingSpeed)) } required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } func addChildFadeIn(node: SKNode, target: SKNode) { node.alpha = 0 target.addChild(node) node.runAction(SKAction.fadeAlphaTo(1.0, duration: NSTimeInterval(kAddChildSpeed))) }

La función AddChildFadeIn se define en clase: singleton

¡Cualquier ayuda es muy apreciada!


Encontré una buena solución para este problema es copiar el nodo original, establecer el alfa de la copia en 0.5 colocarlo directamente sobre la parte superior del nodo original, y configurar su blendMode para agregar. aquí hay una muestra

// this is our original node that we want to make glow playButton.anchorPoint = CGPointMake(0.5, 0.5) // create a copy of our original node create the glow effect let glowNode : SKSpriteNode = playButton.copy() as! SKSpriteNode glowNode.size = playButton.size glowNode.anchorPoint = playButton.anchorPoint glowNode.position = CGPoint(x: 0, y: 0) glowNode.alpha = 0.5 glowNode.blendMode = SKBlendMode.Add // add the new node to the original node playButton.addChild(glowNode) // add the original node to the scene self.addChild(playButton)