2017-08-23 9 views
2

このような他のいくつかの質問を見た後、質問からのすべての回答が私のために働いていません。私は、一時停止のラベルを持っており、ユーザーを押すが、再生するとき、私はラベルが3から1にカウントダウンする「一時停止」から行ってみたい、私は私の遅延とSpriteKit(Swift 3)の遅延機能が動作しない

let delay = SKAction.wait(forDuration: 1) 

を宣言した、そしてそれはどのような他人ですやっているようだが、それは私のために働いていない。

func playButtonTapped(_ sender: Any?) -> Void { 
     let delay = SKAction.wait(forDuration: 1) 
     pauseLabel.text = "3" 
     pauseLabel.run(delay) 
     pauseLabel.text = "2" 
     pauseLabel.run(delay) 
     pauseLabel.text = "1" 
     pauseLabel.run(delay) 
     pauseLabel.removeFromParent() 
     pauseLabel.run(delay) 
     addChild(scoreLabel) 
     addChild(levelLabel) 
     addChild(hero) 
     addEnemies() 
     play.removeFromSuperview() 
     createPauseButton() 

    } 

答えて

3

すべての操作が一度に実行されています。あなたがする必要がどのような

され... - SKAction後(ちなみに「>ボイドは」必要はありません)

{}括弧はcompletion:のために速記しているので、アクション一度に実行するコードを指定します完了しました。あなたのコードは一度にすべてのアクションを実行しますが、遅延も実行されていますが、実行後は何も起動しません。

func playButtonTapped(_ sender: Any?) { 

    let delay = SKAction.wait(forDuration: 1) 

    pauseLabel.text = "3" 
    pauseLabel.run(delay) { 

     pauseLabel.text = "2" 
     pauseLabel.run(delay) { 

      pauseLabel.text = "1" 
      pauseLabel.run(delay) { 

       pauseLabel.removeFromParent() 
       pauseLabel.run(delay) { 

        addChild(scoreLabel) 
        addChild(levelLabel) 
        addChild(hero) 
        addEnemies() 
        play.removeFromSuperview() 
        createPauseButton() 
       } 
      } 
     } 
    } 
} 
+0

のような一連のアクションを作成する必要があります。このアプローチは、あなたの行動の正しい完了を保証します。 –

0

ノードで実行を呼び出すと、アクションがすぐに実行されるため、すべてのアクションはほぼ一度に実行されます。

// elementary actions 
let remove = SKAction.removeFromParent() 
let delay = SKAction.wait(forDuration: 1) 
let text3 = SKAction.run({ pauseLabel="3" }) 
let text2 = SKAction.run({ pauseLabel="3" }) 
let text1 = SKAction.run({ pauseLabel="3" }) 
let end = SKAction.run({ 
    addChild(scoreLabel) 
    addChild(levelLabel) 
    addChild(hero) 
    addEnemies() 
    play.removeFromSuperview() 
    createPauseButton() 
}) 
// sequenced action 
let seq = SKAction.sequence([ text3, delay, text2, delay, text1, delay, remove,end]} 

pauseLabel.run(seq) // now launch the sequence... 
関連する問題