Swift3.0SpriteKit,SKAction 音が途中で止まってしまう。再生が最後まで進まない。

内容

Swift3.0SpriteKit,SKAction 音が途中で止まってしまう。再生が最後まで進まない。

SKAction でサウンドを再生するのですが、画面遷移とかぶると、画面遷移処理が優先されて、音が途中で止まってしまう。再生が最後まで進まないことがありました。これは、ボタンを押したときにボタンの画像を入れ替えるときも似たような症状だと思います。

対応としては、音の再生を待ってから次のアクションになるようにしたいと思います。

アクションを停止して待機して、
let wait = SKAction.waitForDuration(3)
↓SWIFT3.0 なら以下のようになる
let wait = SKAction.wait(forDuration: 3)

そして、次の処理を実行します。
この場合、関数メソッドを呼び出す場合と命令を書く場合があります。どちらでも良さそうです。

参考URL
http://spritekit.senchan-office.com/index.php/skaction

引用
オブジェクトのメソッドを呼び出すアクションを作成
SKAction *action1 = [SKAction performSelector:@selector(method1) onTarget:self];
↓SWIFT3.0 なら以下のようになる
let action1 = SKAction.run(self.func)//self.funcはメソッド指定します

ブロック文を実行するアクションを作成
SKAction *action1 = [SKAction runBlock:^{
// ここに命令文を記述
}]

↓ SWIFT3.0なら以下のようになる
let action1 = SKAction.run({
// ここに命令文を記述
})

こちらの記事もどうぞ