播放mp4 时候 ,有时候正常,有时候黑屏!
代码是仿DEMO的
bool VideoPlayer::init()
{
if (!LayerColor::initWithColor(Color4B::BLACK))
{
return false;
}
auto size = Director::getInstance()->getWinSize();
this->setContentSize(size);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
videoPlayer = cocos2d::experimental::ui::VideoPlayer::create();
videoPlayer->setKeepAspectRatioEnabled(! videoPlayer->isKeepAspectRatioEnabled());
//videoPlayer->setFullScreenEnabled(! videoPlayer->isFullScreenEnabled());
videoPlayer->setPosition(size/2);
videoPlayer->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
videoPlayer->setContentSize(Size(640,640));
this->addChild(videoPlayer);
videoPlayer->addEventListener(CC_CALLBACK_2(VideoPlayer::videoEventCallback,this));
#endif
return true;
}
void VideoPlayer::showVideo(const char *sName)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
if (videoPlayer)
{
videoPlayer->setFileName(sName);
videoPlayer->play();
}else
{
this->videoPlayOverCallBack();
}
#endif
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
this->videoPlayOverCallBack();
#endif
}
遇到问题的平台是安卓
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mVideoWidth == 0 || mVideoHeight == 0) {
setMeasuredDimension(mViewWidth, mViewHeight);
Log.i(TAG, “onMeasure1 :”+mViewWidth+ “:” +mViewHeight);
}
else {
setMeasuredDimension(mVisibleWidth, mVisibleHeight);
Log.i(TAG, "onMeasure2 : "+mVisibleWidth+ “:” +mVisibleHeight);
}
}
这个方法输出的是onMeasure1: 0:0
正常时候输出的尺寸是正常的,黑屏时候输出的尺寸是0:0
如果播放时候是黑屏,把游戏切到后台,再进入游戏就能从头播放!
如果播放时候正常,切到后台再切回来就变成黑屏