Управление слайд-шоу с текущим временем AVAudioPlayer - PullRequest
2 голосов
/ 31 марта 2011

Я использую AVAudioPlayer для воспроизведения файла MP3.Пока проигрыватель запущен, я хотел бы контролировать слайд-шоу с текущим временем проигрывателя.Конечно, я мог бы сделать это с NSTimer, который запускается, когда начинается игра, но это не похоже на приятное решение.Как мне добавить наблюдателя к значению currentTime AVAudioPlayer?

Спасибо, Филипп

1 Ответ

0 голосов
/ 31 марта 2011

Самый чистый способ сделать это - самостоятельно настроить аудиоплеер с помощью AVPlayer и настроить наблюдение с течением времени с помощью -[AVPlayer addBoundaryTimeObserverForTimes:queue:usingBlock:].


Если вы застряли с AVAudioPlayer, я полагаю, вы можете использовать Наблюдение значения ключа для прослушивания изменения currentTime:

static NSString *someObservationContext = @"something";

[audioPlayer addObserver:self forKeyPath:@"currentTime" options:0 context:&someObservationContext];

, а затем реализовать

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if (context == &someObservationContext) {
        NSTimeInterval t = [(AVAudioPlayer *)object currentTime];
        // do your thing
    } else {
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }

Обязательно вызовите -[NSObject removeObserver:forKeyPath:], чтобы убрать хук наблюдения, прежде чем снимать AVAudioPlayer.

...