播放AVAudioPlayer会导致延迟

时间:2012-01-03 13:03:07

标签: ios avaudioplayer delay

我使用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类来播放这种声音吗?我的意思是声音可以持续几分钟甚至几小时。如果选择不是问题,那么什么可能导致延迟?提前致谢

2 个答案:

答案 0 :(得分:2)

在代码中添加 [backgroundPlayer prepareToPlay] 后,您是否尝试过这种情况?我相信这将解决延迟问题。

答案 1 :(得分:0)

第一次尝试播放声音时会发生这种情况。您可以在appdelegate中播放简短的静音,以便在您真正需要时响应AVAudioPlayer