cocos2dx3.3视频播放的实现VideoPlayer的使用

最近因为项目需求需要使用到视频播放功能。

在3.x版本之前如果需要用到视频播放功能就要使用原生的视频播放实现技术,好在3.x之后官方已经集成了视频播放功能,这是值得欣慰的。但是欣慰过后的悲剧在于,官方的文档一直跟不上版本的更新速度。虽然集成了这个功能,但是郁闷的是你要花费很大的力气去尝试使用技巧(仅限于类似我这种菜鸟)。

以下为我整了好久才摸到的使用方法,其实使用不难,难的是一定要注意这个集成的播放器(VideoPlayer)是有平台限制的。一些代码只有在android平台和IOS平台有效。废话不多说了,直接上实例代码:

HelloWorldScene.h文件

 

01. #ifndef __HELLOWORLD_SCENE_H__
02. #define __HELLOWORLD_SCENE_H__
03.  
04. #include "cocos2d.h"
05. //务必引入以下2个.h文件
06. #include "ui/UIVideoPlayer.h"
07. #include "ui/CocosGUI.h"
08. USING_NS_CC;
09. class HelloWorld : public Layer
10. {
11. public:
12. static Scene* createScene();
13.  
14. virtual bool init();
15.  
16. void onEnter();
17.  
18. void videoPlayOverCallback();
19.  
20. void showVideo();
21. /**
22. * 视频播放状态,只有在android和ios平台有效
23. */
24. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
25. void videoEventCallback(Ref* sender, cocos2d::experimental::ui::VideoPlayer::EventType eventType);
26. #endif
27.  
28. CREATE_FUNC(HelloWorld);
29. };
30. #endif

HelloWorldScene.cpp文件

 

 

01. #include "HelloWorldScene.h"
02.  
03. USING_NS_CC;
04.  
05. Scene* HelloWorld::createScene()
06. {
07. auto scene = Scene::create();
08. auto layer = HelloWorld::create();
09. scene->addChild(layer);
10. return scene;
11. }
12. bool HelloWorld::init()
13. {
14. if ( !Layer::init() )
15. {
16. return false;
17. }
18. return true;
19. }
20.  
21. void HelloWorld::onEnter(){
22. Layer::onEnter();
23. showVideo();
24. }
25.  
26. void HelloWorld::showVideo(){
27. Size size = Director::getInstance()->getVisibleSize();
28. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
29. auto videoPlayer = cocos2d::experimental::ui::VideoPlayer::create();
30. videoPlayer->setPosition(Point(size.width / 2, size.height / 2));
31. videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
32. videoPlayer->setContentSize(Size(size.width , size.height));
33. this->addChild(videoPlayer);
34. if (videoPlayer)
35. {
36. videoPlayer->setFileName("1111.mp4");
37. videoPlayer->play();
38. }
39. videoPlayer->addEventListener(CC_CALLBACK_2(HelloWorld::videoEventCallback, this));
40. #endif
41. }
42.  
43. /**
44. * 视频播放完成的回调函数
45. */
46. void HelloWorld::videoPlayOverCallback()
47. {
48.  
49. }
50. /**
51. *  视频播放的状态
52. *  注意这里的代码,此处代码只有在android平台和Ios平台有效
53. */
54. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
55. void HelloWorld::videoEventCallback(Ref* sender, cocos2d::experimental::ui::VideoPlayer::EventType eventType){
56. switch (eventType) {
57. case cocos2d::experimental::ui::VideoPlayer::EventType::PLAYING:
58. break;
59. case cocos2d::experimental::ui::VideoPlayer::EventType::PAUSED:
60. break;
61. case cocos2d::experimental::ui::VideoPlayer::EventType::STOPPED:
62. break;
63. case cocos2d::experimental::ui::VideoPlayer::EventType::COMPLETED:
64. videoPlayOverCallback();
65. break;
66. default:
67. break;
68. }
69. }
70. #endif

转载于:https://www.cnblogs.com/Anzhongliu/p/6091894.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值