相关疑难解决方法(0)

cocos2d:在菜单背景中播放视频

我有一个CCLayer与我的应用程序的开始菜单,我想在后台播放一部短片.我已经成功地在glView中播放了一部电影,但是当它播放时,菜单没有被描绘出来.为了处理电影,我实例化了一个MPMoviePlayerController然后我以这种方式将它的视图添加到glView:

[[[CCDirector sharedDirector] openGLView] addSubview:moviePlayer.view];
Run Code Online (Sandbox Code Playgroud)

我看到这个问题非常相似

电影播放时如何设置菜单 - iphone cocos2d

但我想知道是否有更好的解决方案,可能会让我仍然利用cocos2d框架实体(而不是我自己的观点).

我试图以这种方式发送moviePlayer.view

[theView sendSubviewToBack:moviePlayer.view];
Run Code Online (Sandbox Code Playgroud)

但菜单仍被电影隐藏......

(很多个小时后..)

好的,你可以在第一个评论中读到我已经意识到(可能)唯一的方法是利用自定义视图.我这样做了,它通过在moviePlayer.view之后向glView添加任何视图在模拟器中运行.然而,当我在3.1.3 FW的目标IPod触摸上运行它时,电影视图始终位于顶部.因此我意识到MPMoviePlayerController实际上创建了自己的窗口和自己的视图.一些帖子(比如Streaming MPMoviePlayerController顶部的Overlay)建议拦截加载新窗口的事件,然后才添加子视图.

这就是我试图做的事情,但该事件实际上从未在模拟器上或在目标Ipod上捕获.因此我添加了一个预定的选择器 - (void)更新,它以这种方式实现:

-(void) update{
    NSArray *windows = [[UIApplication sharedApplication] windows];
    if ([windows count] > 1)
    {
    UIImageView *logo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]];
    UIView *theView = [[CCDirector sharedDirector] openGLView];
    [logo setCenter:ccp(240,80)];
    [moviePlayer.view addSubview:logo];
        [self unscheduleAllSelectors];
    }
}
Run Code Online (Sandbox Code Playgroud)

但这部电影仍然保持领先

请大家帮忙,非常感谢!

(几天后......)我还等了2秒,电影实际上正在运行,将我的徽标视图添加为电影播放器​​的子视图.它在模拟器上正常工作,但在Ipod(3.1.3)上,它得出了不同的结果.第一次播放电影时,未显示徽标(电影在顶部).然而,因为一旦电影结束,播放方法就被整理,从第二次开始,在背景上用电影描绘徽标(是我愿意).这对你有意义吗?

我真的需要了解如何解决这个问题,我在2个月内成功开发游戏是非常荒谬的,现在我在开始菜单中被困2周了:)

无论如何,如果我已经决定粘贴我试图修复的图层的整个代码,以便您可以更好地弄清楚问题是什么(或者至少这是我的希望:))

+(id) scene
{
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c cocos2d-iphone

17
推荐指数
1
解决办法
1万
查看次数

标签 统计

cocos2d-iphone ×1

iphone ×1

objective-c ×1