废话不多说,直接上代码
VideoPlayerScene.h
#ifndef __VIDEOPLAYERSCENE_H__
#define __VIDEOPLAYERSCENE_H__
#include "ui/UIVideoPlayer.h"
#include "ui/CocosGUI.h"
#include "cocos2d.h"
USING_NS_CC;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
using namespace cocos2d::experimental::ui;
#endif
class VideoPlayerScene : public Layer
{
public:
VideoPlayerScene(void);
~VideoPlayerScene(void);
virtual bool init();
static cocos2d::Scene *createScene();
CREATE_FUNC(VideoPlayerScene);
Label* _videoStateLabel;
Rect _visibleRect;
//cocos2d::experimental::ui::VideoPlayer* m_VideoPlayer;
//Node生命周期
void onEnter();
void onExit();
void showVideo();
void videoPlayOverCallback();
void menuCloseCallback(cocos2d::Ref* sender); //退出事件回调
void menuRatioCallback(cocos2d::Ref* sender);
void menuResourceVideoCallback(cocos2d::Ref* sender);
void menuOnlineVideoCallback(cocos2d::Ref* sender);
void menuFullScreenCallback(cocos2d::Ref* sender); //全屏回调
void menuPauseCallback(cocos2d::Ref* sender); //暂停播放回调
void menuResumeCallback(cocos2d::Ref* sender); //返回播放回调
void menuStopCallback(cocos2d::Ref* sender); //停止播放回调
void menuHintCallback(cocos2d::Ref* sender); //隐藏回调
/**
* 视频播放状态,只有在android和ios平台有效
*/
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
cocos2d::experimental::ui::VideoPlayer* m_VideoPlayer;
void videoEventCallback(Ref* sender, cocos2d::experimental::ui::VideoPlayer::EventType eventType);
#endif
};
#endif //__VIDEOPLAYERSCENE_H__
VideoPlayerScene.cpp
#include "VideoPlayerScene.h"
VideoPlayerScene::VideoPlayerScene()
{
}
VideoPlayerScene::~VideoPlayerScene()
{
}
Scene* VideoPlayerScene::createScene()
{
Scene *scene = Scene::create();
VideoPlayerScene* layer = VideoPlayerScene::create();
scene->addChild(layer);
return scene;
}
bool VideoPlayerScene::init()
{
if (!Layer::init()) //初始化父类
return false;
return true;
}
void VideoPlayerScene::onEnter(){
Layer::onEnter();
_visibleRect = Director::getInstance()->getOpenGLView()->getVisibleRect();
MenuItemFont::setFontSize(16);
auto fullSwitch = MenuItemFont::create("FullScreenSwitch", CC_CALLBACK_1(VideoPlayerScene::menuFullScreenCallback, this));
fullSwitch->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
fullSwitch->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 200));
auto pauseItem = MenuItemFont::create("Pause", CC_CALLBACK_1(VideoPlayerScene::menuPauseCallback, this));
pauseItem->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
pauseItem->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 400));
auto resumeItem = MenuItemFont::create("Resume", CC_CALLBACK_1(VideoPlayerScene::menuResumeCallback, this));
resumeItem->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
resumeItem->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 350));
auto stopItem = MenuItemFont::create("Stop", CC_CALLBACK_1(VideoPlayerScene::menuStopCallback, this));
stopItem->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
stopItem->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 300));
auto hintItem = MenuItemFont::create("Hint", CC_CALLBACK_1(VideoPlayerScene::menuHintCallback, this));
hintItem->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
hintItem->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 250));
//-------------------------------------------------------------------------------------------------------------------
auto resourceVideo = MenuItemFont::create("Play resource video", CC_CALLBACK_1(VideoPlayerScene::menuResourceVideoCallback, this));
resourceVideo->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
resourceVideo->setPosition(Vec2(_visibleRect.origin.x + _visibleRect.size.width - 10, _visibleRect.origin.y + 50));
auto onlineVideo = MenuItemFont::create("Play online video",