最近因为项目需求需要使用到视频播放功能。
在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.
"ui/UIVideoPlayer.h"
07.
"ui/CocosGUI.h"
08.
USING_NS_CC;
09.
class
HelloWorld :
public
Layer
10.
{
11.
:
12.
static
Scene* createScene();
13.
14.
virtual bool init();
15.
16.
voidonEnter();
17.
18.
videoPlayOverCallback();
19.
20.
showVideo();
21.
/**
22.
* 视频播放状态,只有在android和ios平台有效
23.
*/
24.
#if
(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
25.
videoEventCallback(Ref* sender,cocos2d::experimental::ui::VideoPlayer::EventType eventType);
26.
#endif
27.
28.
CREATE_FUNC(HelloWorld);
29.
};
30.
#endif
HelloWorldScene.cpp文件
"HelloWorldScene.h"
USING_NS_CC;
Scene* HelloWorld::createScene()
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return
scene;
}
bool HelloWorld::init()
{
( !Layer::init() )
return
false
;
true
HelloWorld::onEnter(){
Layer::onEnter();
showVideo();
}
HelloWorld::showVideo(){
Size size = Director::getInstance()->getVisibleSize();
auto videoPlayer = cocos2d::experimental::ui::VideoPlayer::create();
videoPlayer->setPosition(Point(size.width /
2
,size.height /
));
31.
videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
32.
videoPlayer->setContentSize(Size(size.width,size.height));
33.
this->addChild(videoPlayer);
34.
(videoPlayer)
35.
36.
videoPlayer->setFileName(
"1111.mp4"
);
37.
videoPlayer->play();
38.
39.
videoPlayer->addEventListener(CC_CALLBACK_2(HelloWorld::videoEventCallback,));
40.
41.
42.
43.
44.
* 视频播放完成的回调函数
45.
46.
HelloWorld::videoPlayOverCallback()
47.
48.
49.
50.
/**
51.
* 视频播放的状态
53.
54.
55.
HelloWorld::videoEventCallback(Ref* sender,cocos2d::experimental::ui::VideoPlayer::EventType eventType){
56.
switch(eventType) {
57.
casecocos2d::experimental::ui::VideoPlayer::EventType::PLAYING:
58.
break59.
cocos2d::experimental::ui::VideoPlayer::EventType::PAUSED:
60.
61.
cocos2d::experimental::ui::VideoPlayer::EventType::STOPPED:
62.
63.
cocos2d::experimental::ui::VideoPlayer::EventType::COMPLETED:
64.
65.
;
66.
default:
67.
68.
69.
70.
#endif