我使用AVAudioPlayer对象播放aif声音文件,除非游戏结束,否则该文件应继续播放。我有一个名为backgroundPlayer的AVAudioPlayer的ivar,我在viewDidLoad方法中设置它:
-(void)viewDidLoad{
NSURL *backgroundURL=[NSURL fileURLWithPath:[[NSBundle
mainBundle]pathForResource:@"bgLoop" ofType:@"aif"]];
backgroundPlayer=[[[AVAudioPlayer alloc] initWithContentsOfURL:backgroundURL
error:nil] retain];
backgroundAudioPlayer.numberOfLoops=-1;
}
然后我在viewWillAppear方法中播放它:
-(void)viewWillAppear:(BOOL)animated{
TrafficAppDelegate *delegate=[UIApplication sharedApplication].delegate;
if (delegate.shouldPlaySFX)
[backgroundPlayer play];
}
当我按下按钮将视图控制器推到堆栈时,所有这一切设置我挂起大约2-3秒,然后才会出现视图。如果我在viewWillAppear方法中注释[backgroundPlayer play]命令,则延迟消失。我不应该使用AVAudioPlayer类来播放这种声音吗?我的意思是声音可以持续几分钟甚至几小时。如果选择不是问题,那么什么可能导致延迟?提前致谢
答案 0 :(得分:2)
在代码中添加 [backgroundPlayer prepareToPlay] 后,您是否尝试过这种情况?我相信这将解决延迟问题。
答案 1 :(得分:0)
第一次尝试播放声音时会发生这种情况。您可以在appdelegate中播放简短的静音,以便在您真正需要时响应AVAudioPlayer
。