首页 > 代码库 > cocos2dx 3.3 视频播放的实现-VideoPlayer的使用
cocos2dx 3.3 视频播放的实现-VideoPlayer的使用
最近因为项目需求需要使用到视频播放功能。
在3.x版本之前如果需要用到视频播放功能就要使用原生的视频播放实现技术,好在3.x之后官方已经集成了视频播放功能,这是值得欣慰的。但是欣慰过后的悲剧在于,官方的文档一直跟不上版本的更新速度。虽然集成了这个功能,但是郁闷的是你要花费很大的力气去尝试使用技巧(仅限于类似我这种菜鸟)。
以下为我整了好久才摸到的使用方法,其实使用不难,难的是一定要注意这个集成的播放器(VideoPlayer)是有平台限制的。一些代码只有在android平台和IOS平台有效。废话不多说了,直接上实例代码:
HelloWorldScene.h文件
<span style="font-size:18px;">#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" //务必引入以下2个.h文件 #include "ui/UIVideoPlayer.h" #include "ui/CocosGUI.h" USING_NS_CC; class HelloWorld : public Layer { public: static Scene* createScene(); virtual bool init(); void onEnter(); void videoPlayOverCallback(); void showVideo(); /** * 视频播放状态,只有在android和ios平台有效 */ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) void videoEventCallback(Ref* sender, cocos2d::experimental::ui::VideoPlayer::EventType eventType); #endif CREATE_FUNC(HelloWorld); }; #endif </span>
HelloWorldScene.cpp文件
<span style="font-size:18px;">#include "HelloWorldScene.h" USING_NS_CC; Scene* HelloWorld::createScene() { auto scene = Scene::create(); auto layer = HelloWorld::create(); scene->addChild(layer); return scene; } bool HelloWorld::init() { if ( !Layer::init() ) { return false; } return true; } void HelloWorld::onEnter(){ Layer::onEnter(); showVideo(); } void HelloWorld::showVideo(){ Size size = Director::getInstance()->getVisibleSize(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) auto videoPlayer = cocos2d::experimental::ui::VideoPlayer::create(); videoPlayer->setPosition(Point(size.width / 2, size.height / 2)); videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE); videoPlayer->setContentSize(Size(size.width , size.height)); this->addChild(videoPlayer); if (videoPlayer) { videoPlayer->setFileName("1111.mp4"); videoPlayer->play(); } videoPlayer->addEventListener(CC_CALLBACK_2(HelloWorld::videoEventCallback, this)); #endif } /** * 视频播放完成的回调函数 */ void HelloWorld::videoPlayOverCallback() { } /** * 视频播放的状态 * 注意这里的代码,此处代码只有在android平台和Ios平台有效 */ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) void HelloWorld::videoEventCallback(Ref* sender, cocos2d::experimental::ui::VideoPlayer::EventType eventType){ switch (eventType) { case cocos2d::experimental::ui::VideoPlayer::EventType::PLAYING: break; case cocos2d::experimental::ui::VideoPlayer::EventType::PAUSED: break; case cocos2d::experimental::ui::VideoPlayer::EventType::STOPPED: break; case cocos2d::experimental::ui::VideoPlayer::EventType::COMPLETED: videoPlayOverCallback(); break; default: break; } } #endif </span>
如此即可实现视频播放了,对视频的控制请参考官方demo
cocos2dx 3.3 视频播放的实现-VideoPlayer的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。