我正在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参数时呢?
也许这对我来说是完全的误解。有人能给我一个暗示吗?
提前致谢 干杯 约翰
答案 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
设置false
至action1
并运行我的代码,则会获得相同的结果。