2012-02-27 2 views
1

У меня проблема с использованием MPMoviePlayerViewController. Я пытаюсь инициализировать фильм на viewDidLoad, а затем воспроизвести фильм на touchesBegan. Но сначала фильм начинает играть, а на touchesBegan он показывает только готовый фильм.MPMoviePlayerViewController играет без запроса

ViewController.h файл

@interface ViewController : UIViewController{ 

MPMoviePlayerController *moviePlayer; 
MPMoviePlayerViewController *mpviewController; 
MPMovieControlStyle controlStyle;} 

- (IBAction)touchesBegan:(id)sender; 
@property (nonatomic) MPMovieControlStyle controlStyle; 
@end 

ViewController.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

[self.view addSubview:mpviewController.view]; 
[moviePlayer play]; } 


- (void)viewDidLoad 
{ 
NSString *movpath = [[NSBundle mainBundle] 
        pathForResource:@"my_moviefile" 
        ofType:@"m4v"]; 

mpviewController = 
[[MPMoviePlayerViewController alloc] 
initWithContentURL:[NSURL fileURLWithPath:movpath]]; 

[[NSNotificationCenter defaultCenter] 
addObserver:self 
selector:@selector(movieFinishedCallback:)             
name:MPMoviePlayerPlaybackDidFinishNotification 
object:mpviewController]; 

MPMoviePlayerController *mp = [mpviewController moviePlayer]; 
// [mp setMovieControlMode:MPMovieControlModeHidden]; 
// [mp.view setFrame:CGRectMake(0, 0, 250, 263)]; 
mp.controlStyle = MPMovieControlStyleNone;  
[mp prepareToPlay]; 

[super viewDidLoad]; 
} 

Если я помещу весь код в touchesBegan он работает, как ожидалось, но фильм все еще должен загрузить, но я хочу предварительно загрузите его, а затем снова сделайте что-нибудь, когда закончите играть.

Любые подсказки?

С уважением

+0

У Тима есть хорошее предложение ниже. Вы можете проверить (вставив инструкцию NSLog), если по какой-либо причине при вызове приложения возможно вызвать вызовBegan. –

+0

сделал это, фильм все еще играет, но если я прикоснусь к нему, это будет второй раз .... – spankmaster79

ответ

2

Рассмотрим положить ваши [super viewDidLoad] в верхней части viewDidLoad реализации. Это часто вызывает непредсказуемые проблемы.

Также попробуйте добавить [mp pause] и mp.currentPlaybackTime = 0; в конце viewDidLoad.

+0

сделал это, но фильм все еще начинает играть ... – spankmaster79

+0

добавлено больше выданных советов – Tim

+0

все еще это делает. Может быть, мне придется протестировать на реальном устройстве, а не на симуляторе. Он действует странно, как в http://stackoverflow.com/questions/7909121/funky-errors-using-mpmovieplayerviewcontroller – spankmaster79

1

Обязательно установите MPMoviePlayerControllershouldAutoplay - NO при инициализации плеера.

С Артикул:

shouldAutoplay 

Логическое значение, указывающее, следует ли фильм начать воспроизведение автоматически.

@property (nonatomic) BOOL shouldAutoplay 

Обсуждение

Значение по умолчанию этого свойства YES. Это свойство определяет , независимо от того, начинается ли воспроизведение сетевого содержимого , когда имеется достаточное количество буферизованных данных для обеспечения непрерывного воспроизведения.

Доступность Доступно в iOS 3.2 и новее. Объявлен в MPMoviePlayerController.h

Смежные вопросы