公司的游戏需要将一段动画做在启动的时候
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能后续继续完善。


更多相关文章

  1. Android(安卓)如何直播RTMP流
  2. Android(安卓)应用软件开发(四)菜单控件
  3. android studio 使用代码混淆
  4. ListView的item点击失效解决
  5. GridView 控件和Gallery 控件
  6. android style中出现自定义属性时的写法
  7. android 数据库SQL 框架例子
  8. android Vitamio(维他命)入门
  9. Android软件开发之常用系统控件界面整理

随机推荐

  1. android 特殊用法琐碎二
  2. 初识Android之(一)-自定义标题栏控件
  3. android 通过php post 向mysql数据库写入
  4. Android(安卓)官方自带侧滑菜单DrawerLay
  5. Android FFmpeg 脚本编译静态库
  6. 简单几段代码实现窗口抖动
  7. gerrit 常用命令记录
  8. Android获取Theme的背景颜色
  9. android学习的网址
  10. android camera2 image 中获得的yuv数据