2009-11-26 92 views
0

我有一個簡單的iPhone應用程序,有幾個聲音已經播放。但是,特別是不會。代碼塊,我砍死了是:如何調試聲音無法通過AVAudioPlayer播放的原因?

NSString *soundPath2 = [[NSBundle mainBundle] pathForResource:@"gameover" ofType:@"wav"]; 
NSURL *soundFileURL2 = [NSURL fileURLWithPath:soundPath2]; 
NSError *err; 
AVAudioPlayer *sound2 = [[[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL2 error:&err] autorelease]; 
NSLog(@"Error: %@", [err description]); 
NSLog(@"Duration: %f ", [sound2 duration]); 
BOOL b = [sound2 play]; 
NSLog(@"Play Bool: %d", b); 

控制檯顯示的錯誤爲空,則返回true,甚至持續時間是正確的!然而,遊戲什麼都不做。如果我將「遊戲轉移」改爲另一種聲音(簡單的嘟嘟聲),一切都很好。

雖然它能很好地發揮它的作用,但我也在努力瞭解錯誤條件等等。我可以檢查1)知道它失敗了,2)爲什麼。

聲音是問題可在http://wdr1.com/gameover.wav

回答

4

問題是你不應該自動釋放AVAudioPlayer。遊戲方法是異步發生的,如果玩家獲得了自動釋放,那麼沒有任何東西可以保持,它就會死亡。

一旦玩家完成你需要釋放你的音頻播放器中播放的代表:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)audioPlayer successfully:(BOOL)flag 
+0

這做到了!謝謝。 – Bill 2009-11-27 00:02:16

+1

我有一個奇怪的事情使用A.R.C.操作系統過早自動釋放對象。這讓我瘋狂!我最終將播放器保存到緩存(字典)中以使其播放。 – Olie 2012-11-06 18:40:36