2016-09-25 95 views
1

我试图停止SKAction,每次我按下一个按钮(这是在背景上的不同位置随机生成的)播放声音,但我希望能够做到这一点调用一个动作。我试图找出大概2个小时,现在绝对没有成功。我的代码,我试图停止行动如下:Xcode 8音频停止AVAudio

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) 

谢谢,如果你能解释你是如何做到这一点,那将是惊人的!

回答

0

我刚刚解决了这个问题,通过制作if语句来判断分数是否超过了某个点,它会停止所有操作,然后播放所需的声音。它看起来像这样:

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

对于任何问题只问我!

0

我的建议没有为实际的斯威夫特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 
} 
+0

存在还有SKAudioNode但最近很多人都像一个坏呼啸的一些问题声音,我不知道如果iOS 10解决这个问题。这是SKAudioNode问题的一个例子:https://www.kingsware.de/2016/07/16/using-avfoundation-to-play-audio-in-an-skaction-in-spritekit/ –

+0

谢谢你尝试以帮助我,但我昨天晚上工作了大约3个小时后才知道它是一个if语句和一行简单的代码。但是,我已经开始讨论一个新问题。我试图做一个计时器,当应用程序关闭时触发,以便我可以发送通知到“回来”。如果你能帮我解决这个问题,那会很棒。 –

+0

按照SO规则的说明打开一个新问题,以便您可以编写所有必要的代码,人们可以专注于您的新问题,我很乐意为您提供帮助。 –