cocos2dx 3.15 视频播放实现 lua 以及c++ 版本VideoPlayer的使用注意 与详细示例

本文介绍了如何在cocos2dx 3.15中使用lua和C++实现视频播放功能,强调了在OnEnter中创建VideoPlayer的重要性,并提供了具体的代码示例。同时,提到了android.mk配置、环境变量设置以及VedioPlayer在Win32平台不适用的问题。
摘要由CSDN通过智能技术生成

废话不多说,直接上代码

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", 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值