本帖源于小弟自己在项目过程中为了解决在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设置成透明:
1 | _viewController.view.backgroundColor = [UIColor clearColor]; |
然后创建一个新的uiviewcontroller来放置videoplayer的视图和cocos自己的图层,先添加video层,后加cocos层,以便cocos层把video层盖住:
appController.h里:
1 | @property ( nonatomic , readonly ) UIView* videoView; |
appController.mm里:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | _viewController.view.tag = 3; UIViewController* uiVC = [[UIViewController alloc] initWithNibName: nil bundle: nil ]; uiVC.view.frame = [UIScreen mainScreen].bounds; _videoView = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; _videoView.tag = 1; //设置tag以便之后把Video层取出来~ [uiVC.view addSubview:_videoView]; [uiVC.view addSubview:_viewController.view]; // Set RootViewController to window if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) { // warning: addSubView doesn't work on iOS6 [window addSubview: uiVC.view]; } else { // use this method on ios6 [window setRootViewController:uiVC]; } |
接下来就可以打开UIVideoPlayer-ios.mm文件了,找到文件中
1 | [eaglview addSubview: self .moviePlayer.view]; |
这一句,改成
1 | [[eaglview.superview viewWithTag:1] addSubview: self .moviePlayer.view]; //在eaglview的父视图里找到tag=1的子视图,也就是实现设置好的Video视图。 |
就可以了~