发现网上关于视频播放VideoPlayer的资料好少,而这个类坑又比较多,在这里记录一下我自己探索到的一些东西,希望对大家有用
我使用的cocos版本是3.2,然后开发环境是VS2012
1。官方Demo
其实VideoPlayer 是有官方Demo的,不过因为它只支持安卓和ios平台,所以在vs打开cocos2dx的cpptest是看不到的,但在CocosGUIScene.cpp里面可以看到这么几句代码:
g_guisTests[] =
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
{
"VideoPlayerTest",
[](Ref* sender)
{
UISceneManager* sceneManager = UISceneManager::sharedUISceneManager();
sceneManager->setCurrentUISceneId(kUIVideoPlayerTest);
sceneManager->setMinUISceneId(kUIVideoPlayerTest);
sceneManager->setMaxUISceneId(kUIVideoPlayerTest);
Scene* scene = sceneManager->currentUIScene();
Director::getInstance()->replaceScene(scene);
}
},
#endif
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
{
"VideoPlayerTest",
[](Ref* sender)
{
UISceneManager* sceneManager = UISceneManager::sharedUISceneManager();
sceneManager->setCurrentUISceneId(kUIVideoPlayerTest);
sceneManager->setMinUISceneId(kUIVideoPlayerTest);
sceneManager->setMaxUISceneId(kUIVideoPlayerTest);
Scene* scene = sceneManager->currentUIScene();
Director::getInstance()->replaceScene(scene);
}
},
#endif
......
所以我们直接转到
CocosGUIScene所在的文件夹,可以看到UIVideoPlayerTest这个文件夹,官方的Demo就在这里了。
具体的路径是“引擎的路径\cocos2d-x-3.2\tests\cpp-tests\Classes\UITest\CocoStudioGUITest\UIVideoPlayerTest”
2.打包出现“error: undefined reference to 'cocos2d::experimental::ui::VideoPlayer::VideoPlayer()'”
因为VideoPlayer是集成在gui模块里面的,而gui模块好像又是放在cocotuio的模块里面的,所以必须把Android.mk里面
# LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
前面的#去掉,编译cocostudio_static库
3.使用的注意事项
(1)不能在Layer的init里面create VideoPlayer之后立即调用setFileName和play播放视频,这样会出现bug,视频不能播放(奇怪的是按home键把游戏转到后台,然后再进去又会看到视频正在播放)
(2)视频播放完之后想重新播放不能只调用play,setFileName和play必须一起调用
(3)试过在一个方法里面create VideoPlayer和setFileName和play一起做了,然后再点击事件(DelayTime之后callfunc里面调用也是)里面调用,发现不能播放视频(按home键把游戏转到后台,然后再进去又会看到视频正在播放),不知道是为什么。不过在onEnter里面调用就没有问题