2015-02-24 16 views
5

Sto lavorando alla mia prima app SpriteKit in Xcode 6, che codifica in Swift. Ora ho creato alcuni bei pulsanti dai file png trasparenti. Ma sto cercando di mostrare un effetto visivo quando viene premuto il pulsante.Aggiunta di un effetto visivo a un SKSpriteNode quando viene premuto

Esempio di come io ora mostrare un pulsante statica:

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) 

Qualsiasi effetto sarebbe sufficiente, forse un effetto di impulso, o bagliore sulla stampa. Ho cercato, ma non riesco davvero a trovare nulla in Swift.

edit: più informazioni

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 funzione AddChildFadeIn è definita in classe: singleton

Ogni aiuto è molto apprezzato!

+0

Che cos'è il pulsante? Dove è definito addChildFadeIn? –

+0

Ho modificato il post con queste informazioni. Potresti aiutarmi? –

+0

Purtroppo non conosco SpriteKit. Ho aggiornato il titolo e i tag per rendere la tua domanda più rilevabile da persone che possono rispondere. –

risposta

1

Ho trovato una buona soluzione a questo problema è copiare il nodo originale, impostare l'alpha della copia su 0.5 posizionarlo direttamente sopra il nodo originale e impostarne la blendMode da aggiungere. ecco un esempio

// 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)