iOS AVAudioPlayer несколько экземпляров, несколько звуков одновременно - PullRequest
1 голос
/ 29 сентября 2010

Я работаю над интерактивной детской книгой для iPad, в которой есть опция «читай мне».

Для каждой страницы (которая имеет индекс) есть аудиоклип, который производит функцию «читай мне». Функция работает хорошо, за исключением того факта, что когда я переворачиваю страницу, звук предыдущих страниц все еще воспроизводится, даже когда начинается новое аудио, вот мой пример:

- (void) didTurnToPageAtIndex:(NSUInteger)index 
{
    if ([delegate respondsToSelector:@selector(leavesView:didTurnToPageAtIndex:)])
        [delegate leavesView:self didTurnToPageAtIndex:index];

    if([[NSUserDefaults standardUserDefaults] boolForKey:@"kReadToMe"] == YES)
    {
        NSString* filename = [voices objectAtIndex:index];
        NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"m4v"];  
        NSLog(@"File: %@, Index: %i",path,index);

        //Create new audio for next page
        AVAudioPlayer * newAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 
        rtmAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded
        //[newAudio release];
        [rtmAudio play];
    }
}

Скажем, к примеру, я перехожу на страницу 3 до того, как перестанет воспроизводиться звук на странице 2, оба клипа воспроизводятся друг над другом, что раздражает детей, я знаю, что это так.

Я пытался поместить [rtmAudio stop] перед тем, как выделить новый файл, но, похоже, это не работает. Мне нужен способ убить преобладающий аудиоклип перед началом нового клипа.

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Я бы сказал, что у вас есть один экземпляр аудиоплеера во всем приложении.Затем вы можете проверить, играет ли он, если это так, остановите его и затем продолжайте.

вы создаете нового игрока в этом методе, прежде чем остановить старый .... Я считаю,

0 голосов
/ 15 января 2015

Как отметил AlexChaffee в Apple docs , «Воспроизведение нескольких звуков одновременно, по одному звуку на аудиоплеер, с точной синхронизацией».Представляется предпочтительным использовать несколько экземпляров в приложении с уведомлениями NSNotificationCenter.

...