Я использую AVAudioPlayer для воспроизведения 15 аудиофайлов.Аудио файлы должны быть воспроизведены в наборах по 5, причем каждый набор имеет три файла.Три файла в наборе не меняются.Порядок воспроизведения наборов может измениться.
Я попытался использовать цикл while с isPlaying следующим образом:
while ([backgroundSound isPlaying]) {
NSLog(@"First while loop");
}
backgroundSoundPath = [[NSBundle mainBundle] pathForResource:@"Set0File1" ofType:@"mp3"]; // *Music filename*
backgroundSound =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:backgroundSoundPath] error:nil];
[backgroundSound prepareToPlay];
[backgroundSound play];
while ([backgroundSound isPlaying]) {
NSLog(@"Second while loop");
}
backgroundSoundPath = [[NSBundle mainBundle] pathForResource:@"Set0File2" ofType:@"mp3"]; // *Music filename*
backgroundSound =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:backgroundSoundPath] error:nil];
[backgroundSound prepareToPlay];
[backgroundSound play];
while ([backgroundSound isPlaying]) {
NSLog(@"Third while loop");
}
Теперь я понимаю, что это не так с побочным эффектом, заключающимся в том, чтоВесь пользовательский интерфейс заблокирован на время воспроизведения файла.
Я знаю, что должен использовать:
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) проигрыватель успешно: (BOOL) flag
Но я не знаю, как audioPlayerDidFinishPlaying должен точно знать, какой файл завершил воспроизведение.
Я подумал, что это может быть как - (void) animationDidStop, где вы можете использоватьзначениеForKeyPath, чтобы выяснить, какой файл закончил воспроизведение.
Нужно ли отслеживать его вручную?
Буду признателен за любые предложения указать мне правильное направление.
Спасибо.