我使用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类来播放这种声音吗?我的意思是声音可以持续几分钟,即使是hours.If选择也不是问题,那么是什么导致延迟呢?提前感谢
发布于 2012-01-31 19:09:30
在代码中添加backgroundPlayer prepareToPlay后,您是否尝试过这种情况?我相信这会解决延迟的问题。
发布于 2012-02-23 03:03:31
它发生在你第一次尝试播放声音的时候。你可以在你的应用程序代理中播放简短的无声声音,让AVAudioPlayer在你真正需要它的时候做出响应。
https://stackoverflow.com/questions/8712714
复制相似问题