原生iOS工程怎么调整videoplayer层级 官方能给方案吗

我需要将videoplayer放置在opengl层之下,之前在cocos3.3版本做过并解决了这个问题,原来的解决方案可以参考:https://blog.csdn.net/woshiwoxinheqiu/article/details/85691237
现在我们要实用cocos creator开发,我按照之前的经验操作,android原生已经解决,现在ios原生工程实现不了,报错信息如下:

  • Creator 版本:2.1.3

  • 目标平台: iOS

  • 详细报错信息,包含调用堆栈:
    2019-10-16 15:56:27.767849+0800 hello_world-mobile[42116:11637430] Metal GPU Frame Capture Enabled
    2019-10-16 15:56:27.768633+0800 hello_world-mobile[42116:11637430] Metal API Validation Enabled
    2019-10-16 15:56:27.911204+0800 hello_world-mobile[42116:11637430] failed to call context
    2019-10-16 15:56:27.920726+0800 hello_world-mobile[42116:11637430] failed to call context

  • 重现方式:
    AppController.mm文件修改以下代码:

    UIViewController *videoController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    videoController.view.opaque = YES;
    [videoController.view addSubview:_viewController.view];
    videoController.view.backgroundColor = [UIColor whiteColor];

    // Set RootViewController to window
    if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
    {
    // warning: addSubView doesn’t work on iOS6
    [window addSubview: videoController.view];
    }
    else
    {
    // use this method on ios6
    [window setRootViewController:videoController];
    }

官方大佬没人来回复一下么?以后游戏的趋势肯定是视频+游戏场景结合,官方要赶紧将videoplayer功能实现才好啊

把游戏层的view放到视频层上面就可以了 要是需要有互动就把游戏view弄成透明就ok了

我今天测试了一下creator v1.10版本,新建一个helloworld工程,用上面的代码测试没有问题

测试代码:
UIViewController videoController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UIView
videoView = [[UIView alloc] initWithFrame: [window bounds]];
videoView.backgroundColor = [UIColor clearColor];
videoView.tag = 3; //设置tag以便之后把Video层取出来~

[videoController.view addSubview:videoView];
[videoController.view addSubview:_viewController.view];


// Set RootViewController to window
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
{
    // warning: addSubView doesn't work on iOS6
    [window addSubview: videoController.view];
}
else
{
    // use this method on ios6
    [window setRootViewController:videoController];
}

我用creator v2.0.0版本使用上面的测试代码就黑屏了,无法渲染openGL层,这个问题应该从2.0.0版本开始就一直存在了。
另外我发现从2.0.0版本开始,app启动的时候会先显示launcher页面,然后再闪一下粉色(iOS模拟器下是粉色,真机是黑色),大约0.5秒之后才会渲染openGL图层,2.0版本之前没有发现有这个问题。
官方没有什么说法吗,有没有官方大佬出来解答一下?现在着急确定开发框架啊大佬们!!!

你是什么版本?我发现2.0.0版本之后搞不了,openGL层直接不渲染了

结帖吧,需要添加一下代码设置openGL层大小
_viewController.view.frame = bones

1赞

2.1.3版本videoplayer.resume方法有bug,需要修复,修复方法如下:
Mac修改这个目录下/Applications/CocosCreator.app/Contents/Resources/builtin/jsb-adapter/engine/jsb-videoplayer.js

_p.resume = function () {
let video = this._video;
if (this._playing || !video) return;//修改这一行代码
console.log("—zhaxun fix videoplayer resume!")
video.resume();
this._playing = true;
};

https://worthatry.cn/cocos-creator-ru-he-shi-bei-jing-tou-ming/
刚有时间看论坛 可以看下这篇帖子 还有就是如果视频功能很多的话引擎的videoplayer满足不了可以试试ijk

mark