公司的游戏需要将一段动画做在启动的时候
cocos2d-x lua 使用了ccexp.VideoPlayer,windows下是不能播放的,所以项目在windows下还是继续使用图片
代码如下
local visibleSize = cc.Director:getInstance():getVisibleSize()
if device.platform == "android" or device.platform == "ios" then
local videoPlayer = ccexp.VideoPlayer:create() --创建
local function onVideoEventCallback(sener, eventType) --播放完成回调
if eventType == ccexp.VideoPlayerEvent.COMPLETED then
self:goUpdateLayer() --播放完成的回调函数,可以修改
videoPlayer:stop()
videoPlayer:runAction(
cc.Sequence:create(
cc.CallFunc:create(callback),
cc.RemoveSelf:create()))
end
end
videoPlayer:setPosition(cc.p(display.cx, display.cy))
videoPlayer:setAnchorPoint(cc.p(0.5, 0.5))
videoPlayer:setContentSize(cc.size(display.cx, display.cy))
videoPlayer:setFileName("hall_res/Login_Video.mp4") --资源文件位置
videoPlayer:setKeepAspectRatioEnabled(true)
videoPlayer:setTouchEnabled(false)
videoPlayer:setFullScreenEnabled(true)
videoPlayer:setVisible(true)
videoPlayer:addEventListener(onVideoEventCallback)
self:addChild(videoPlayer)
videoPlayer:play()
end
不得不说坑是真的多
1、Android下会出现可以点击暂停的现象,需要修改java部分的代码
在Cocos2dxVideoView.java 的201行,2行注释掉,这样就没点击响应了
public boolean onTouchEvent(MotionEvent event) {
if((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP)
{
if (isPlaying())
{
//pause();
}
else if(mCurrentState == STATE_PAUSED)
{ //resume();
}
} return true;
}
这样安卓的就完成了
然后真正的大坑就是IOS了
2、首先发现IOS不会暂停,但是会弹出播放视频的快进那个界面,WTF
这个oc代码里的视频控件有个样式,更改controlStyle 这个属性,即可隐藏进度条,另外修改userInteractionEn
UIVideoPlayer-ios.mm
self.moviePlayer.allowsAirPlay = false;
self.moviePlayer.controlStyle = MPMovieControlStyleNone;// MPMovieControlStyleEmbedded;
self.moviePlayer.view.userInteractionEnabled = false;//true;
3、IOS第二个坑来了,播放完了,闪退,哈哈哈
看了一下,发现在lua那边去除视频控件的时候发生的异常,IOS这个控件需要下载网络视频,不能播放本地视频
但是,这可能嘛?
搜索了一波,连google都没
于是做了一个延迟事件,解决了,不知道是不是给自己埋了一个坑
videoPlayer:runAction(
cc.Sequence:create(
cc.CallFunc:create(callback),
cc.RemoveSelf:create()))
end
代码如下,然后把播放结束后的函数放在这个前面,不然会出现黑屏闪屏的现象
然后IOS不闪退了
但是发现,初始的时候是黑屏,很难看
看了看腾讯的游戏,初始是有一张图片的
在Xcode那,有个LaunchImage属性,点击项目->General->App Icons and Launch Images,使用LauchImage
然后在BuildSetting里有个Asset Catalog Launch Image Set Name设置自己本地的图片,运行吧!
除了上述问题,该视频控件目前只能遮盖在用户显示层的上层,对于某些比如嵌入播放之类操作,依然有很多问题,希望cocos能后续继续完善。