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

    如此即可实现视频播放了,对视频的控制请参考官方demo
  • 原文:http://www.it165.net/pro/html/201501/31423.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值