2016-04-03 9 views
0

私は、画面に触れたときにラベルが画面に跳ね返るはずのゲームを構築しています(touchesBeganの内側にあります)。Spriteキットのラベルが跳ね返る

私は「バウンス」を手伝ってくれましたthis拡張子を見つけましたが、私はまでの秒私はrestartButtonをタッチすると(このボタンはうまく働いていた)ことを何が起こるか分からない(継続の時間?!?!)、 myLabelはアニメーションなしで表示されます。私は間違って何かしていますか?

Ps:restartButtonにはremoveAllActions()があります。だからこのアニメーションがループしていても(私はそうではないと思われます)、停止されますか? createScene()は、実際のゲームシーン(などなど位置、スケール、物理学、など物事が)です:

func restartScene(){ 
     self.removeAllChildren() 
     self.removeAllActions() 
     gameStarted = false 

     createScene() 
    } 

シモンズ:restartButtonがタッチされ

//myLabel 
    myLabel.position = CGPoint(x: self.frame.width/2, y: self.frame.height) 
    myLabel.text = "0" 

    self.addChild(myLabel) 

    //bounces into screen (using Sprite-Kit Spring) 
    self. myLabel.runAction(SKAction.moveTo(CGPoint(x: self.frame.width/2, y: self.frame.height/1.125), duration: 3.0, delay: 0.5, usingSpringWithDamping: 0.2, initialSpringVelocity: 0.0)) 

は、それがこの関数を呼び出します。

+0

removeAllActionsは、シーン内のアクションのみを削除し、子のアクションは削除しません。 RemoveAllChildrenはアクションを削除しません。ラベルのすべてのアクションを削除するよう呼び出す。 – Knight0fDragon

+0

ありがとうございます!出来た!! =) – Luiz

答えて

1

Sprite Kitで作業する場合は、SKSceneがSKNodeのメンバーであることに注意してください。 removeAllActionsを呼び出すと、画面に適用されたアクションだけが削除され、removeAllChildrenを呼び出すと、アクションではなく子が削除されます。

すべての子供にremoveAllActionsと電話をかけて移動を停止する必要があります。

子どもの行動をすべて削除する方法が必要な場合は、SKNodeに内線番号を設定します。

extension SKNode 
{ 
    func removeAllActionsIncludingChildren() 
    { 
     self.removeAllActions() 
     self.children.map { $0.removeAllActionsIncludingChildren()} 
    } 
} 
+0

ありがとうございました!!! =) – Luiz

関連する問題