2011-12-01 29 views
5

Tôi gặp sự cố với MPMoviePlayerViewController, khi ứng dụng nhập vào nền và sau đó tôi khởi chạy lại hoặc chuyển sang chế độ xem khácCác bộ phim trở thành màu đen! Tôi có phim đóng trong nền của menu của tôi, đây là mã của tôi:MPMoviePlayerViewController trở thành màu đen khi nhập vào nền

EIDTED Mã sản phẩm:

-(void)viewDidLoad { 
     [self moviePlayer2]; 
    } 

    - (void) moviePlayer2 { 



    NSString *path = [[NSBundle mainBundle] pathForResource:@"cloud" ofType:@"mp4"]; 
    player = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]]; 
    player.view.userInteractionEnabled = YES;  
    player.moviePlayer.repeatMode = YES; 
    player.moviePlayer.scalingMode = MPMovieScalingModeFill; 
    player.moviePlayer.controlStyle = MPMovieControlStyleNone; 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackStateChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:[player moviePlayer]]; 

    [[player moviePlayer] play]; 

    [self.view addSubview:player.view]; 

} 


-(void) moviePlayBackStateChange: (NSNotification *) note { 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:[player moviePlayer]]; 

    [[player moviePlayer] play]; 

    //[player release]; 
    NSLog(@"FINISHED"); 
} 

cảm ơn bạn.

+0

hiện 'movieFinishedPlaying' được gọi khi ứng dụng của bạn chạy vào nền? Nếu bạn không biết, hãy đặt một điểm ngắt (hoặc sử dụng NSLog cho bảng điều khiển) và tìm hiểu. –

+0

khi tôi chuyển đổi giữa các viewControllers có. trình biên dịch cho tôi thấy thông điệp NSLog –

Trả lời

3

Tôi nghĩ rằng bạn có thể cần phải thêm mã dưới đây:

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackStateChange:) 
               name:MPMoviePlayerPlaybackStateDidChangeNotification 
               object:[player moviePlayer]]; 

và xử lý m trạng thái ovie trong phương thức moviePlayBackStateChange. Phim sẽ bị tạm dừng khi phim đang phát và ứng dụng đi vào nền, vì vậy bạn cần làm cho phim tiếp tục như sau khi ứng dụng quay lại từ nền. Nếu không, phim sẽ giữ trạng thái tạm dừng. Đó là lý do tại sao ứng dụng của bạn trở thành màu đen.

[[player moviePlayer] play]; 

thì phim sẽ tiếp tục phát. thêm hai phương pháp mà bạn nên invote khi ứng dụng đi vào nền và lưng từ nền:

-(void) pauseMovieInBackGround 
{ 
    [player moviePlayer] pause]; 
    [player.view removeFromSuperview]; 
} 
-(void) resumeMovieInFrontGround 
{ 
    [self.view addSubview:player.view]; 
    [[player moviePlayer] play]; 
} 

Hy vọng điều này có thể giúp bạn chàng.

+0

cảm ơn bạn nên đặt mã này ở đâu? '[[player playerPlayer] chơi];' bạn có thể xem mã đã chỉnh sửa của mình ... bởi vì tôi có cùng một vấn đề ... sau khi chuyển đổi khung nhìn, phim của tôi trở thành màu đen! –

+0

thay đổi lượt xem bằng bộ điều khiển hiện tại và sau đó tắt chế độ xem khác –

+0

bạn có vui lòng xem xét lại mã của mình không? Tôi thực sự cần câu trả lời này –

1

Hãy thử thay đổi này:

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]]; 
[player release]; 

Để này:

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:[player moviePlayer]]; 
[movieController.view removeFromSuperview]; 
[player release]; 

Xem nếu mà làm việc: D

+0

giờ đây màn hình trắng xuất hiện vì removeFromSuperview! –

+0

bất kỳ đề xuất nào? –

+0

Bạn có đang thay thế chế độ xem đã xóa với bất kỳ chế độ xem nào khác không? Nếu không, điều đó sẽ giải thích nó. Đảm bảo bạn sử dụng "[viewController addSubview: newView];" nhưng thay thế viewController và newView bằng chế độ xem của riêng bạn –

Các vấn đề liên quan