Получил сообщение «ПРЕДУПРЕЖДЕНИЕ: при нормальных условиях _fillInQueueWithExtraSpace: ..» и вращение MPMoviePlayer не работают в iPad IOS 5.1 - PullRequest
4 голосов
/ 21 марта 2012

Это мой первый пост, и может показаться неправильным. Итак, я должен сделать вращение в cocos2d на iPad (5.1) Я использую 2 разных видео для каждой ориентации. И там у меня 2 проблемы:

  1. Приложение запускается в портретном режиме и нормально воспроизводит видео. Я вызываю (играю) видео 5-10 раз, когда видео заканчивается, я вращаю симулятор. Представление вращается, НО, когда я вызываю (играю) видео - это показывает белый экран и следующее сообщение:

    "ПРЕДУПРЕЖДЕНИЕ: при нормальных условиях _fillInQueueWithExtraSpace: ignoreExistingItems: не следует вводить повторно."

    Тогда Если я снова поверну экран (несколько раз) - и воспроизведу его в альбомном режиме - он хорошо воспроизводит видео. Также наоборот. Когда я запускаю из ландшафтного режима

  2. Проблема поворота вида. Когда я поворачиваю вид влево / вправо (от портрета) - не могу повернуть вид назад. Так что я могу вращаться только по часовой стрелке или против часовой стрелки. Как это исправить?


-(id) init { 
  pathToVideoP = [[NSBundle mainBundle] pathForResource:@"video_portrait" ofType:@"mp4"];
  pathToVideoL = [[NSBundle mainBundle] pathForResource:@"video_landscape" ofType:@"mp4"];    
  theMovieP = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:pathToVideoP]];
  theMovieL = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:pathToVideoL]];
}

-(void) playVideoButtonClicked {
    movieButton.visible = FALSE;
    if (sharedManager.isPortrait){
        theMovie = theMovieP;
    } else {
        theMovie = theMovieL;
    }
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:[theMovie moviePlayer]];

    CGSize size = [[CCDirector sharedDirector] winSize];
    [[[CCDirector sharedDirector] openGLView] addSubview:theMovie.view];

    player = [self.theMovie moviePlayer];
    player.controlStyle = MPMovieControlStyleNone;
    [theMovie moviePlayer].view.backgroundColor = [UIColor whiteColor];
    theMovie.view.frame = CGRectMake(0, 0, size.width, size.height);

    if (sharedManager.isPortrait) {
        CGAffineTransform transform = player.view.transform;
        player.view.transform = transform;
    }
    else if (sharedManager.changeOrientation)
    {
        CGAffineTransform transform = player.view.transform;
        transform = CGAffineTransformRotate(transform, (-M_PI/2 ));
        player.view.transform = transform;
    }
    sharedManager.changeOrientation = NO;
    player.backgroundView.backgroundColor = [UIColor whiteColor];
    theMovie.view.backgroundColor = [UIColor whiteColor];
    player.view.userInteractionEnabled = NO;
    player.scalingMode = MPMovieScalingModeNone;
    [player play];
}

-(void) moviePreloadDidFinish:(id)sender {
}

-(void) movieFinishedCallback:(NSNotification*) aNotification {
    theMovie = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];    
    [player stop];
    [theMovie.view removeFromSuperview];
    movieButton.visible = TRUE;
}

1 Ответ

0 голосов
/ 13 февраля 2014

Добавьте эту строку кода после создания объекта Player.player = [self.theMovie moviePlayer];player.controlStyle = MPMovieControlStyleNone;

Это необходимо в следующей версии iOS 6.0 ниже.Может быть, это полезно.

[player prepareToPlay];

...