2016-12-21 23 views
2

SKAction.runアクション内のコードブロックは何らかの理由で実行されることはありません。SKAction実行アクション内のコードは実行されません

明確にするため、startActionの2行は、他の行が実行されても何らかの理由で決して実行されません。

これらの行にブレークポイントを置くと、それらの行は決して実行されません。

何か手掛かりがありますか?それは現場に配置されるまで

// Set first frame 
    let firstFrame = frames[0] 
    let animationNode = SKSpriteNode(texture: firstFrame) 
    animationNode.position = CGPoint(x: x, y: y) 

    // Set start action 
    let startAction = SKAction.run({ 
     gAudio.playSound(file: .TestSound) // Never runs 
     self.animationLayer.addChild(animationNode) // Never runs 
    }) 

    // Set rest of animation 
    let timePerFrame = 0.5 
    let animationAction = SKAction.animate(with: frames, timePerFrame: timePerFrame, resize: false, restore: true) 
    let removeAction = SKAction.removeFromParent() 
    let animationSequence = SKAction.sequence([startAction, animationAction, removeAction]) 

    // Run animation 
    animationNode.run(animationSequence) 
+1

実行即時での実行を開始する必要がありますが、ブロックは、キューに行くと呼ばれる正確な時間の実行時に起動するように保証するものではありません実行すると何かが起きる前に、ノードを親から削除します。 – Knight0fDragon

+0

@ Knight0fDragonはとても感謝しています。答えとして投稿してみませんか?これは問題を説明するように思われる、ない? – Crashalot

+0

アニメーションが実行されていない場合のみ – Knight0fDragon

答えて

2

アクションは、あなたがここで起こっ鶏と卵のジレンマを持っている、ノードに対して発生しません。ノード(卵)が世界に存在すると(鶏は同じ卵を産む)シーン(鶏)にノード(卵)を追加したいとします。あなたは何か他にシーンにノードを置く必要があります、そして、ノードはアクションを実行することができます。

は、あなたのシーンにあなたの開始アクションを置き、そしてないあなたのノードを、そしてそれが

+0

もう一度ありがとう!実際に最も洞察に満ちたあなたの説明の部分は、タイミング・アクションと、 '実行 'アクションを伴う一連のアクションを保証する方法についての少し分かりました。そのビットも含めたいですか? – Crashalot

+1

あなたの問題に関連しておらず、人々を混乱させるだけなので、 – Knight0fDragon

+0

OK、もう一度ありがとう! – Crashalot

関連する問題