2012-01-03 111 views
0

我使用AVAudioPlayer对象来播放aif声音文件,除非游戏结束,否则应该继续播放。我已经AVAudioPlayer的伊娃称为backgroundPlayer,我把它架在viewDidLoad方法:播放AVAudioPlayer导致延迟

-(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

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

0

发生在你第一次尝试播放声音时。您可以在appdelegate中播放短暂的无声音,以便在您真正需要时响应AVAudioPlayer