2016-09-25 10 views
1

私はボタンを押すたびにサウンドを再生するSKActionを停止しようとしていますが、これはバックグラウンド上の別の場所でランダムに生成されますが、行動を呼び出す。私は約2時間の間これを理解しようとしましたが、まったく成功しませんでした。私は行動を停止しようとしている私のコードは以下の通りです:Xcode 8 Audio Stop 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) 
     } 

質問がありましたらお聞かせください。

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()メソッドを使用する必要があります。

0

私のアドバイスは、実際のスウィフト3のために変更しないでください、あなたのゲームであなたのサウンドを作るためにAVAudioPlayerを選択することです。しかし、あなたはそれがありますもあるSKAudioNodeが、最近、多くの人々が悪い口笛のようないくつかの問題を抱えている。この

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

のように最初に存在することを確認するのが最善ですので、あなたのアプリケーションがクラッシュします存在しない音を停止しようとした場合サウンド、私はiOS 10がこの問題を解決するかわかりません。これはこのSKAudioNode問題の例です:https://www.kingsware.de/2016/07/16/using-avfoundation-to-play-audio-in-an-skaction-in-spritekit/ –

+0

お試しいただきありがとうございます手伝ってもらえましたが、昨夜XDで約3時間の作業の後で、それを理解しました。これはif文と1つの単純なコード行でした。しかし、私は新しい問題に移りました。私が "戻る"に通知を送ることができるように、アプリが閉じられたときに起動されるタイマーを作ろうとしています。それで私を助けることができれば、それはすばらしいことでしょう。 –

+0

SOルールで説明されているように新しい質問を開くと、必要なコードをすべて書くことができ、人々はあなたの新しい問題に集中できるようになりました。 –