我有一个简单的iPhone应用程序,已经播放了几个声音。但是,其中一个特别不会。我破解的代码块是:
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);
控制台显示错误为null,布尔值返回true,甚至持续时间都是正确的!然而,游戏什么都不做。如果我将“gameover”更改为另一种声音(简单的哔哔声),一切都很好。
虽然玩它会很棒,但我也很难理解错误条件等等。我可以检查1)知道它失败了2)为什么。
声音问题可在http://wdr1.com/gameover.wav处找到。
答案 0 :(得分:4)
问题是你不应该自动释放AVAudioPlayer。播放方法是异步发生的,如果播放器被自动释放,那么没有任何东西可以保持它并且它将会死亡。
一旦玩家在代表中完成游戏,你应该释放你的音频播放器:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)audioPlayer successfully:(BOOL)flag