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

时间:2022-01-27 09:27:00

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

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

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

HelloWorldScene.h文件

 

view sourceprint?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 Layer10.{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.#endif27. 28.CREATE_FUNC(HelloWorld);29.};30.#endif
HelloWorldScene.cpp文件

 

 

view sourceprint?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.#endif41.}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