cocos2d-x 3.4版本,videoPlayer和webView上添加sprite等cocos控件

本帖源于小弟自己在项目过程中为了解决在cocos2d-x中实现ios里videoPlayer自定义控件的需求,所以挖出来大神的一个帖子
http://www.cocoachina.com/bbs/read.php?tid=235430&page=e&#a

不过大神帖子是针对cocos2d-x 3.2的,cocos进化到3.4之后似乎不是很一样了,小弟入行太浅,也不是很懂,所以就自己根据大神的帖子搞了搞,思路和大神是一样滴:
由于目测videoplayer控件是ios原生的uiview控件,跟cocos的绘图方式不是一个级别,所以videoplayer在添加的时候根本就没有添加到cocos的图层里,而是在图层上面新加了一个uiview控件;
解决方法呢,在appController.mm文件里先把_viewController设置成透明:

  _viewController.view.backgroundColor = ;

然后创建一个新的uiviewcontroller来放置videoplayer的视图和cocos自己的图层,先添加video层,后加cocos层,以便cocos层把video层盖住:

  appController.h里:<pre class="brush:objc; toolbar: true; auto-links: false;"> @property(nonatomic, readonly) UIView* videoView;

appController.mm里:


_viewController.view.tag = 3;
UIViewController* uiVC = initWithNibName:nil bundle:nil];
uiVC.view.frame = .bounds;
_videoView = initWithFrame: bounds]];
_videoView.tag = 1; //设置tag以便之后把Video层取出来~

;
;

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

接下来就可以打开UIVideoPlayer-ios.mm文件了,找到文件中<pre class="brush:objc; toolbar: true; auto-links: false;">;

这一句,改成

 addSubview:self.moviePlayer.view];   //在eaglview的父视图里找到tag=1的子视图,也就是实现设置好的Video视图。

就可以了~
相似的~webView作为ios原生控件的另一份子,也可以用同样的方式放到cocos的图层下面,以方便在上面加控件。
以上的修改方式和大神的帖子基本是一样的,只是小弟注释的地方稍微比大神帖子详细一点点,特此声明一下~~

mark:2::2::2::2::2::2:

3.3 下貌似不起作用,cocos层还是被盖住了

nice:14::14::14::14::14:

:14:补充下Android的处理方法:

3.5为例:

Cocos2dxVideoHelper.java:

注释掉: videoView.setZOrderOnTop(true);这一行

Cocos2dxVideoView.java:

修改: if((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP)
为: if(false)

谢谢大神, 解决了困扰我两个月的问题.!!! :7:

尝试过 不起作用。继续尝试中,大哥有什么建议么?

原来是 add 的 顺序问题。不能通过 ccs 把 界面创建好 然后通过 setvisable 来控制!

OK​:ok_hand:。。。。

现在又遇到了个问题,上层的界面覆盖在视频上方的部分响应不了点击事件,至于触摸事件我还没有尝试,但是未覆盖视频的部分是可以触发点击事件的。这个覆盖层是通过cocostudio 绑定的点击事件,然后在程序中克隆一份,直接把克隆的部分add上去,原始的那一份隐藏掉。不知道大哥有什么意见么,我正在看videoplay的android代码,无头绪啊,android不熟悉。

好贴…mark:2::2:

按照这个方式 整个页面显示是黑色的 但是能听到声音,怎么回事呢,按钮也能显示,感觉视频被一个黑色层给挡住了

appcontroller.mm里面的颜色设为透明了么?

不过貌似这有个弊端诶,iOS7下响应不了屏幕旋转。。。横屏下显示竖屏的样式。。。转不过来怎么办~???求大神了。。。

:2: :2: :2: :2: :2: :2: :2: :2: :2: :2: ,你的帖子好多人回复啊,我发的技术贴就没几个人看,伤心:8::8::8::8::8::8::8::8::8::8::8::8:

按照楼主的方法做了。还是不能实现效果额。。
也输出断点看了下视频确实是加在_videoView上面,
而且_videoView是先加载uiVC上,之后才加_viewController.view。
而且还出现了另外的情况,我uiVC设置为根视图的话,游戏运行的时候不能全屏显示了。。

你的问题解决了吗,我遇到了同样的问题

android的在3.8也不妥啊

横竖屏的问题 我会解决。。但覆盖的问题搞不定

请问, 你在3.8上解决这个问题了吗?

如果解决了,能麻烦你贴出解决方法吗?

我也遇到了这个问题, 一点头绪都没有。