2015-02-24 13 views
5

Pracuję nad moją pierwszą aplikacją SpriteKit w Xcode 6, kodując w Swift. Teraz zrobiłem kilka ładnych przycisków z przezroczystych plików png. Ale próbuję pokazać efekt wizualny po naciśnięciu przycisku.Dodawanie efektu wizualnego do SKSpriteNode po naciśnięciu

Przykład jak ja teraz pokazują statyczny przycisk:

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) 

Wszelkie efekt byłby wystarczający, może efekt impulsu lub Glow w prasie. Szukałem, ale nie mogę znaleźć niczego w Swift.

edit: Więcej informacji

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

Funkcja AddChildFadeIn jest zdefiniowana w klasie: singleton

Każda pomoc jest mile widziane!

+0

Co to jest Button? Gdzie jest zdefiniowany addChildFadeIn? –

+0

Edytowałem post z tymi informacjami. Czy mógłbyś mi pomóc? –

+0

Niestety nie znam SpriteKita. Zaktualizowałem Twój tytuł i tagi, aby Twoje pytanie było łatwiejsze do wykrycia przez osoby, które mogą odpowiedzieć. –

Odpowiedz

1

Znalazłem miłym rozwiązaniem tego problemu jest skopiowanie oryginalnego węzła, ustawienie alfa kopii na 0.5, umieszczenie go bezpośrednio nad oryginalnym węzłem i ustawienie jego blendMode do dodania. tutaj jest próbka.

// 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) 
Powiązane problemy