2016-09-25 168 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規則的說明打開一個新問題,以便您可以編寫所有必要的代碼,人們可以專注於您的新問題,我很樂意爲您提供幫助。 –