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設置成透明:

?

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視圖。


就可以了~
相似的~webView作爲ios原生控件的另一份子,也可以用同樣的方式放到cocos的圖層下面,以方便在上面加控件。

 

 

 

文章來源:http://www.cocoachina.com/bbs/read.php?tid=290869&page=1&toread=1#tpc&tdsourcetag=s_pcqq_aiomsg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章