2012-01-03 3 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 секунд, и только после этого появится представление. Если я прокомментирую команду [backgroundPlayer play] в методе viewWillAppear, задержка исчезнет. Разве я не должен использовать класс AVAudioPlayer для воспроизведения таких звуков? Я имею в виду, что звук может продолжаться в течение нескольких минут, даже часов. Если выбор не является проблемой, то что может вызвать задержку? Заранее спасибо

ответ

2

Вы пробовали этот случай после добавления в свой код [backgroundPlayer prepareToPlay]? Я считаю, что это решит проблему задержки.

0

Это происходит в первый раз, когда вы пытаетесь воспроизвести звук. Вы можете воспроизводить короткий тихий звук в вашем appdelegate, чтобы сделать отзывчивым, когда он вам действительно нужен.

Смежные вопросы