Xcode 8 Audio Stop AVAudio

时间:2016-09-25 00:23:13

标签: ios sprite-kit skaction

我试图停止SKAction,每当我按下一个按钮(在背景上的不同位置随机生成)时我会播放声音,但我希望能够通过调用动作来做到这一点。我已经尝试了大约2个小时,但绝对没有成功。我正在尝试停止操作的代码如下:

let clickSound = SKAction.playSoundFileNamed("Click.wav", waitForCompletion: false)
    //sound action
    let playCorrectSoundEffect0 = SKAction.playSoundFileNamed("Correct0.wav", waitForCompletion: false)
    //where im tying to create an action to stop the sound file above from playing
    let stopCorrectSoundEffect0 =
    let playCorrectSoundEffect1 = SKAction.playSoundFileNamed("Correct1.wav", waitForCompletion: false)
    let playCorrectSoundEffect2 = SKAction.playSoundFileNamed("Correct2.wav", waitForCompletion: false)
    let endSoundEffect = SKAction.playSoundFileNamed("GameOverSound", waitForCompletion: false)

谢谢,如果你能解释一下你是怎么做到的,那就太棒了!

2 个答案:

答案 0 :(得分:0)

我刚刚通过制作一个if语句来解决这个问题,如果分数超过某一点,它将停止所有动作,然后播放想要的声音。它看起来像这样:

if scoreNumber >= 10 {
            removeAllActions()
            self.run(playCorrectSoundEffect1)
        }

如有任何问题,请问我!

答案 1 :(得分:0)

对于实际的Swift 3,我的建议不做改变,就是选择AVAudioPlayer来制作游戏中的声音:

let path = Bundle.main.path(forResource: "sound.wav", ofType:nil)!
let url = URL(fileURLWithPath: path)

do {
    let sound = try AVAudioPlayer(contentsOf: url)
    clickSound = sound
    sound.play()
} catch {
    // couldn't load file 
}

如果你想停止声音,你应该使用它的stop()方法。但是,如果您尝试停止不存在的声音,您的应用会崩溃,因此最好首先检查它是否存在

if clickSound != nil {
    clickSound.stop()
    clickSound = nil
}