Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题
2015-12-02 17:38
561 查看
最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏。
解决办法如下,可能不是太完美,至少解决了大部分问题。
1.在org.cocos2dx.lib下的 Cocos2dxRenderer.java 中添加native方法
2.在Cocos2dxRenderer.java对应的Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp中添加对应的方法
3.在CCDirector.cpp中添加setAndroidPause用来标记是否已经暂停
4.在org.cocos2dx.lib下的Cocos2dxActivity.java中的onPause添加 1 步骤的方法
5.在CCTextureCache.cpp的 VolatileTexture::reloadAllTextures() 方法中添加一行代码,用来恢复暂停状态
6.播放音乐时候判断一下是否是暂停状态还没有恢复过来 SimpleAudioEngine.cpp中
解决办法如下,可能不是太完美,至少解决了大部分问题。
1.在org.cocos2dx.lib下的 Cocos2dxRenderer.java 中添加native方法
public static native void setIsPause(boolean isPause);
2.在Cocos2dxRenderer.java对应的Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp中添加对应的方法
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_setIsPause(JNIEnv* env, jobject thiz, jboolean ispause) { CCDirector::sharedDirector()->setAndroidPause(ispause); }
3.在CCDirector.cpp中添加setAndroidPause用来标记是否已经暂停
//设置暂停状态 void CCDirector::setAndroidPause(bool isPause) { m_bAndroidPaused = isPause; } //获取暂停状态 bool CCDirector::getAndroidPause() { return m_bAndroidPaused; }
4.在org.cocos2dx.lib下的Cocos2dxActivity.java中的onPause添加 1 步骤的方法
@Override protected void onPause() { Cocos2dxRenderer.setIsPause(true); super.onPause(); Cocos2dxHelper.onPause(); this.mGLSurfaceView.onPause(); }
5.在CCTextureCache.cpp的 VolatileTexture::reloadAllTextures() 方法中添加一行代码,用来恢复暂停状态
void VolatileTexture::reloadAllTextures() { isReloading = true; CCLOG("reload all texture"); ... ...//此处省略中间内容 isReloading = false; //最后一行将暂停设置为false CCDirector::sharedDirector()->setAndroidPause(false); }
6.播放音乐时候判断一下是否是暂停状态还没有恢复过来 SimpleAudioEngine.cpp中
unsigned int SimpleAudioEngine::playEffect(const char* pszFilePath, bool bLoop) { if(CCDirector::sharedDirector()->getAndroidPause()) return 0; std::string fullPath = getFullPathWithoutAssetsPrefix(pszFilePath); return playEffectJNI(fullPath.c_str(), bLoop); }
相关文章推荐
- 本机上多个cocos2dx版本下怎么创建自己想要的版本?
- cocos2dx-lua方法笔记
- cocos2d-lua敏感词过滤函数
- 用 nodejs 写一个 cocos2dx-js 游戏自动更新版本的脚本
- 【cocos2d-x 3D游戏开发】1: 2D基础回顾---触摸事件(2.x)
- cocos2dx3.x绘制自己的node
- cocos2d-x札记 (一)----HelloWorld浅析
- 入手cocos2dx3.9笔记 3 tolua++解析
- cocos2d js显示远程下载的图片资源
- [Cocos2d-x/iOS源码]<诸神的挑战>三消新玩法
- 用AndroidStudio开发cocos2d-x 项目
- 【cocos2d-js系列问题】cocos2d HTML5和JSB接口差异,已知的兼容bug
- editbox点击空白隐藏键盘
- cocos2dx3.4开发环境搭建详解(3) cocos2dx lua项目发布到android手机
- cocos2dx js 常用端版本判断记录
- cocos进阶教程(5)回调函数和定时器的使用技巧
- 3D引擎:Horde3D:Cocos 和 Horde3D渲染部分的设计比较
- cocos2dx3.4开发环境搭建详解(2)
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决
- Cocos2Dv3.4在AppDelegate中不返回的情况及解决