Не удалось установить initialPlaybackTime для MPMoviePlayerController при его повторном создании во второй раз - PullRequest
2 голосов
/ 04 июня 2010

Когда в первый раз создается MPMoviePlayerController (например, theMovie), его initialPlaybackTime может быть успешно установлен. Но когда theMoive выпущен и воссоздан новый MPMoviePlayerController, его intialPlaybackTime не может быть установлен правильно, фактически фильм всегда воспроизводится с самого начала. Код выглядит следующим образом.

-(void)initAndPlayMovie:(NSURL *)movieURL
{

    MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    // create a notification for moviePlaybackFinish
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];

    theMovie.initialPlaybackTime = 15;
    [theMovie setScalingMode:MPMovieScalingModeAspectFill];
    [theMovie play];}
-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
    MPMoviePlayerController * theMovie = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];
    [theMovie release];
    [self initAndPlayMovie:[self getMovieURL]];
}

С помощью приведенного выше кода, когда viewcontroller загрузил и запустил initAndPlayMovie, фильм начинает воспроизводиться с 15 секунд, но когда он завершается или нажимается «Done», создается новый theMovie и начинается воспроизведение с 0 секунды. , Кто-нибудь знает, что случилось со свойством initialPlaybackTime в MPMoviePlayerController?

И всякий раз, когда вы перезагружаете viewController, где находится вышеуказанный код (presentModalViewController из родительского viewcontroller), фильм может начинаться с любого времени воспроизведения. Я действительно сбит с толку, в чем разница между методами регистрации MPMoviePlayerController между загрузкой viewcontroller и ее повторным созданием после выпуска.

Ответы [ 2 ]

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

После того, как вы выпустили theMovie, присвойте ему значение nil

[theMovie released]; theMovie = nil;

тогда вы можете сказать, выпущен ли он уже.

if (theMovie == nil){ <br> //do something here when movie player is released already<br> }

1 голос
/ 05 июня 2010

Проблема была решена! Для правильной настройки initialPlaybackTime требуется один шаг.

после выпуска проигрывателя фильма, перед возобновлением воспроизведения требуется 1-секундная задержка. Убедитесь, что проигрыватель фильма выпущен полностью.

Мне потребовалось 3 дня, чтобы выяснить проблему. Но теперь мой вопрос заключается в том, как я могу определить, был ли выпущен фильм полностью, а не ждать одну секунду.

...