Отмените Фильм, прежде чем он начнет играть

Я - потоковое видео к iPhone и не люблю способ, которым MPMoviePlayerController обрабатывает вещи вначале. Я заметил, что при нажатии на строку для выбора конкретного фильма, приложение просто находится там, пока это не загружается достаточно для проигрывания его. Таким образом, я появился в UIImageView с загружающимся изображением и хорошим счетчиком для информирования пользователя.

Я думаю, что у них должна быть опция отменить игру назад фильма, если они устают от ожидания. Таким образом, у меня есть кнопка отмены с фоновым изображением.

UIButton *cancel;
    UIImage *cancelImage = [UIImage imageNamed:@"cancel.png"];
    cancel = [UIButton buttonWithType:UIButtonTypeCustom];
    cancel.frame = CGRectMake(0,0, cancelImage.size.width, cancelImage.size.height);
    cancel.center = CGPointMake(35, 20); 
    [cancel setImage:cancelImage forState:UIControlStateNormal];
    [cancel addTarget:self action:@selector(cancelMovie) forControlEvents:UIControlEventTouchUpInside];
    [moviePreviewView addSubview:cancel];

Но я не уверен, что вставить cancelMovie метод. Я попытался копировать то, что я имею в moviePlayBackDidFinish методе обратного вызова, но он отказывает скорее эффектно.

Я также попробовал:

-(void)cancelMovie {
[theMovie.view removeFromSuperview];
[theMovie release];
}

Но это не делает ничего хорошего также. Я думал, что мог назвать moviePlayBackDidFinish непосредственно, но я не думаю, что можно назвать метод уведомления непосредственно.

Ваши мысли?

1
задан Michael Morrison 8 August 2010 в 06:05
поделиться

1 ответ

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

В любом случае, я не нашел хорошего решения этой проблемы ... просто взлом.

В методе отмены я сказал MoviePlayer загрузить другой односекундный фильм, который является той же фотографией, которую я использовал в previewImage. Когда этот «фильм» заканчивается, он переходит к вызову MPMoviePlayerPlaybackDidFinishNotification, очищает и возвращает пользователя туда, где он был.

-(void)cancelMovie
{
cancelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"cancel" ofType:@"m4v"]];

[theMovie setContentURL:cancelURL];

[theMovie setControlStyle:MPMovieControlStyleFullscreen];
[theMovie setFullscreen:YES];

// for some reason ... this is neccessary
[theMovie prepareToPlay];

// Register that the load state changed (movie is ready)
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(moviePlayerLoadStateChanged:) 
                                             name:MPMoviePlayerLoadStateDidChangeNotification 
                                           object:theMovie];

// Register for the PlayBackDidFinish (movie is finished)
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(moviePlayBackDidFinish:) 
                                             name:MPMoviePlayerPlaybackDidFinishNotification 
                                           object:theMovie];    
 }

Нехорошо ... но работает.

2
ответ дан 2 September 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: