cocos2d-x android黑屏后返回游戏卡顿
来源:互联网 发布:可以赚钱的网络兼职 编辑:程序博客网 时间:2024/03/29 04:43
转载 http://blog.csdn.net/wolfking_2009/article/details/8824931
2013年5月17日更新:对于之前说的资源释放问题,cocos2d-x 2.1.3已经解决,就是说中断之后不释放资源,估计方法跟之前提到的差不多,我没有仔细研究过....
在调试的过程中发现,如果中断处理的时候,让游戏显示暂停界面,方法不当有可能会出问题,本人就遭遇了,返回时直接退出游戏,或者不显示暂停界面的问题。后来发现如果创建的暂停界面层,在AppDelegate::applicationDidEnterBackground方法里创建会没有问题~如果在AppDelegate::applicationWillEnterForeground()方法里创建就有可能出现如上问题~
再来说下声音中断~其实声音中断有个比较魂淡的地方,就是声音中断时,可以直接stop,返回时再play,但是android上发现恶心的问题,就是游戏的时候直接点电源关掉屏幕,再返回的时候,在锁屏界面,游戏就又继续了,意思是锁屏界面就已经调用AppDelegate::applicationWillEnterForeground()~机制问题没办法,还没有想到解决办法~
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
今天在android手机上测试游戏声音的中断,发现比较恶心的事情是,中断完返回游戏后,发现游戏长时间卡顿~
网上翻帖子~发现是游戏资源被释放掉了,回来的时候要重新加载~群里有大侠说是CCTextureCache的原因~
用ios测试了下,发现没有问题,然后开始找CCTextureCache的问题了~发现了一个宏
/** Reload all textures It's only useful when the value of CC_ENABLE_CACHE_TEXTURE_DATA is 1 */ static void reloadAllTextures();显然跟CC_ENABLE_CACHE_TEXTURE_DATA 这个宏有关。找到源头,发现/** @def CC_ENABLE_CACHE_TEXTURE_DATAEnable it if you want to cache the texture data.Basically,it's only enabled in androidIt's new in cocos2d-x since v0.99.5*/#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #define CC_ENABLE_CACHE_TEXTURE_DATA 1#else #define CC_ENABLE_CACHE_TEXTURE_DATA 0#endif
好嘛~只有android的使用了这个宏~
关闭之,测试,哭了,回去后黑屏~
继续翻贴,发现
http://novacreo.com/%E7%A8%8B%E5%BA%8F%E7%BB%84/%E8%BF%94%E5%9B%9Eandroid%E6%B8%B8%E6%88%8F%E9%BB%91%E5%B1%8F%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/
//原帖内容如下:
返回Android游戏黑屏解决办法
这几天逛cocos2d-x.org论坛,发现cocos2d-x的作者放出来一个帖子,用来解决返回Android游戏加载资源时黑屏的问题。帖子过些日子估计就沉了,所以转出来,以供后面查询。
需要修改三个文件:
1) cocos2dx/platform/CCPlatformMacros.h
将Line84修改为 #define CC_ENABLE_CACHE_TEXTURE_DATA 0
2)cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java
注释掉Line167。
3)android工程目录下jin/hellocpp/main.cpp
注释掉Line32~43。
基本原理就是在activity进入后台后,不清除texture缓存,这样在activity回到前台后,不需要重新load资源。
我在自己的游戏上试了一把,修改之前切回游戏需要4秒左右时间,修改后不用1秒,可谓瞬间完成。
不过这个解决方案有些小问题,当有其他surfaceView的activity,比如集成了Admob广告后,切回来时只能看到广告,而不显示游戏画面。有个老外Pablo Tonello回复帖子说没有集成Admob也遇到了这种情况。目前还不知道是啥问题,有待慢慢研究。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个帖子倒是解决问题了,不过瞧那意思插入其他的SDK可能还有问题~
待解决吧
还有个帖子是说做个load界面来显示,以遮住卡顿~~~~~~~~~~~~
帖子地址:http://blog.csdn.net/yanghuiliu/article/details/7362019
如果有更好的办法,麻烦告诉我一下~THX
- cocos2d-x android黑屏后返回游戏卡顿
- cocos2d-x android黑屏后返回游戏卡顿
- cocos2d-x android黑屏后返回游戏卡顿
- cocos2d-x 游戏卡帧效果
- cocos2d-x 2.1.4的版本bug cocos2d-x android返回黑屏问题的
- cocos2d-x Android游戏黑屏解决办法
- cocos2d-x Android游戏黑屏解决办法
- cocos2d-x的android黑屏问题
- cocos2d-x Android游戏黑屏解决办法
- 关于cocos2d-x(Android)集成广告点击广告后再点击back键退出桌面并出现黑屏问题
- cocos2d-x(quick--cocos2d-x)引擎开发的游戏在android平台上,锁屏,按HOME键,重反游戏后黑屏问题
- cocos2d移植android 黑屏10秒左右后自动退出
- cocos2d-x编译到android平台后,增加返回键和菜单键的支持
- cocos2d-x android平台切后台返回后的纹理加载问题
- cocos2d-x&android返回键&菜单键
- Cocos2d-x响应android返回键
- cocos2d-x 3.2 android返回键退出
- 笔记本电脑玩游戏卡顿 如何避免?
- #iOS开发笔记#如何限制UIImageView放大缩小的比例
- union 与union all的区别
- B. New Year Permutation
- like模糊查询
- Java中的泛型方法
- cocos2d-x android黑屏后返回游戏卡顿
- superSlide显示左右滚动
- swift与oc的互用--代码迁移
- 常用sql语句
- 锋利的SQL2014:层次结构操作之Hierarchyid
- 时间计划(15~17,18,19)
- 安装VMware Workstation失败
- hexo 解决代码块前后多余空行的问题
- MFC操作Excel2003的CRange类的Copy函数和Delete函数实现方法