当我们改变场景时,后台的 MPMoviePlayerController 不会离开页面

Posted

技术标签:

【中文标题】当我们改变场景时,后台的 MPMoviePlayerController 不会离开页面【英文标题】:MPMoviePlayerController in background doesn't leave page when we change scene 【发布时间】:2013-06-20 21:59:08 【问题描述】:

我正在使用MPMoviePlayerControllerCCMenu 的背景中播放视频。所以我在一些按钮后面播放了一段视频。当我切换视图/场景时,我希望moviePlayer 使场景与该层/场景上的按钮/图像相同。

后台播放电影的代码如下:

-(void)playMainMenuVideo
NSString *path=[[NSBundle mainBundle] pathForResource:@"MYMMainMenu" ofType:@"mov"];
MPMoviePlayerViewController * player=[[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];
player.moviePlayer.controlStyle = MPMovieControlStyleNone;
[[player view] setFrame:[[[CCDirector sharedDirector]view] bounds]];
player.moviePlayer.scalingMode = MPMovieScalingModeAspectFill;
[[[CCDirector sharedDirector]view] addSubview:[player view]];
[[[CCDirector sharedDirector]view] sendSubviewToBack:player.view];
UIView* glView = [CCDirector sharedDirector].view; // attention
[glView.superview insertSubview:player.view atIndex:0]; // attention
glView.opaque = NO; // attention
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // attention

这很完美,在应用程序委托中我也更改了

CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
                               pixelFormat:kEAGLColorFormatRGB565 // To kEAGLColorFormatRGBA8

最后我想做一个这样的翻页:

        [[CCDirector sharedDirector] replaceScene: [CCTransitionPageTurn transitionWithDuration:1.0 scene:[FirstPageViewController scene]]];

但只有精灵会离开场景,视频会在后台继续播放。我怎样才能解决这个问题?提前致谢

【问题讨论】:

【参考方案1】:

我想通了。

1) 视频播放完毕时的设置通知。 2) 播放完毕后,将视频最后一帧的图像放在视频上。 3)然后将这些属性设置回原来的

UIView* glView = [CCDirector sharedDirector].view; // attention
glView.opaque = YES; // attention
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

4)删除MPMoviePlayerController

祝大家编码愉快:)

【讨论】:

以上是关于当我们改变场景时,后台的 MPMoviePlayerController 不会离开页面的主要内容,如果未能解决你的问题,请参考以下文章

js 事件

DOM 常见事件

小程序之通过参数改变标签

利用ajax与后台交互容易出现的问题及解决办法

当应用程序进入后台时停止 AVAudioPlayer 音乐

PyQT QGraphicScene 在后台线程中移动项目