Воспроизведение AVAudioPlayer вызывает задержку - PullRequest
1 голос
/ 03 января 2012

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

Ответы [ 2 ]

2 голосов
/ 31 января 2012

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

0 голосов
/ 22 февраля 2012

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

...