SpriteKit SKAction.playSoundFile - waitForCompletion没有等待

时间:2016-01-09 07:15:35

标签: ios swift sprite-kit

我正在Swift2中进行一些SpriteKit游戏开发。我有2个部分的音频句子(两个部分都根据实际游戏情况计算),我想在第1部分完成后玩第2部分。

这两行声音同时播放

self.runAction(SKAction.playSoundFileNamed("question-part-a.wav", waitForCompletion: true)
self.runAction(SKAction.playSoundFileNamed("question-part-b.wav", waitForCompletion: true)

但是,参数waitForCompletion: true有什么用呢?

我可以使用完成处理程序解决这个问题,当使用runAction(action: SKAction, completion block: () -> Void)但是再次使用waitForCompletion参数时呢?

也许这对我来说是完全的误解。有人能给我一个暗示吗?

提前致谢 干杯 约翰

1 个答案:

答案 0 :(得分:1)

你误解了waitForDuration的含义。在苹果文档中,这就是它的含义 -

  

等待
  如果为true,则此操作的持续时间与音频播放的长度相同。如果为false,则认为该操作已立即完成。

因此,如果您想按顺序运行它,请执行此操作。

let action1 = SKAction.playSoundFileNamed("question-part-a.wav", waitForCompletion: true)
let action2 = SKAction.playSoundFileNamed("question-part-b.wav", waitForCompletion: true)
runAction(SKAction.sequence([
            action1,
            action2
            ]))

在您的情况下,运行操作而不将它们放在SKAction.sequence中意味着编译器同时执行两行代码。如果您为wait设置falseaction1并运行我的代码,则会获得相同的结果。