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

来源:互联网 发布:优化科技创新生态系统 编辑:程序博客网 时间:2024/04/29 23:39
  • 最近因为项目需求需要使用到视频播放功能。

    在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 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文件

     

     

    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.#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
0 0
原创粉丝点击