効果音が同時に再生できず困っております。
メインのViewControllerからSound().playSound()を実行して、1秒後と4秒後に効果音を出そうとしています。
1秒後の効果音は再生されるのですが、4秒後の再生のタイミングで1秒後に再生されていた効果音もろとも音が消えてしまいます。エラーはキャッチしません。
ググった結果で
・cafファイルだと同時再生ができる
・AudioPlayerを分ければ同時再生ができる
・そもそもBuildPhases/CopyBundleResourcesに登録してる?→してます
・ファイル名にアンダーンバーがダメ?→消してみたり
など修正して試していますがうまく行きません。
ちなみに遅延処理がダメなのかと思い、遅延なしでこの二つを同時に再生してみてもやっぱり鳴りません。
メインのVCにこの処理を書けば普通に両方鳴るのですが・・・
かなり初歩的なミスを起こしていそうな気がしてなりませんが、よろしくお願いしますm(._.)m
Swift
1import AVFoundation 2 3class Sound{ 4 5 var audioPlayer: AVAudioPlayer? 6 var audioPlayer2: AVAudioPlayer? 7 8 func playSound(){ 9 10 let urlOpenSound = 11 NSBundle.mainBundle().URLForResource("sound_open", withExtension: "caf") 12 let urlOpenVoice = 13 NSBundle.mainBundle().URLForResource("voice_open", withExtension: "caf") 14 15 var delay = 1.0 * Double(NSEC_PER_SEC) 16 var time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 17 18 dispatch_after(time, dispatch_get_main_queue(), { 19 do{ 20 self.audioPlayer = try AVAudioPlayer(contentsOfURL: urlOpenSound!) 21 self.audioPlayer?.play() 22 }catch{ 23 } 24 }) 25 26 delay = 4.0 * Double(NSEC_PER_SEC) 27 time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 28 dispatch_after(time, dispatch_get_main_queue(), { 29 do{ 30 self.audioPlayer2 = try AVAudioPlayer(contentsOfURL: urlOpenVoice!) 31 self.audioPlayer2?.play() 32 }catch{ 33 } 34 }) 35 36 } 37 38}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。