最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏。

解决办法如下,可能不是太完美,至少解决了大部分问题。

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 ;
std::string fullPath = getFullPathWithoutAssetsPrefix(pszFilePath);
return playEffectJNI(fullPath.c_str(), bLoop);
}

Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题的更多相关文章

  1. cocos2dx骨骼动画Armature源码分析(一)

    源码分析一body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-to ...

  2. cocos2dx骨骼动画Armature源码分析(三)

    代码目录结构 cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个 ...

  3. cocos2dx骨骼动画Armature源码分析(二)

    flash中数据与xml中数据关系 上篇博文从总体上介绍了cocos2dx自带的骨骼动画,这篇介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). sk ...

  4. cocos2dx AudioEngine在Android7上播放音效卡顿问题处理

    1.此问题在cocos2dx 3.13/3.14版本(其它版本没有测试过)在Android7中使用AudioEngine的play2d函数播放音效时出现. 调试时出现如下提示: 2.论坛中相关讨论帖地 ...

  5. EasyPlayerPro Windows播放器全屏模式下GDI显示出现黑屏问题解决

    问题来源 2017.12.21 前天有杭州某教育领域客户反馈有部分视频源在全屏模式下显示黑屏: 问题复现 EasyPlayerPro由于没有实现单个窗口完全全屏,故没有暴露该问题,晚上加班,加上单个窗 ...

  6. Android Activity切换(跳转)时出现黑屏的解决方法

    在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在 ...

  7. cocos2dx - v2.3.3编辑器骨骼动画

    接上一节内容:cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配 本节主要Cocos骨骼动画的创建及使用 一.新建 用Cocos Studio工具新建一个状态栏项目.如下图: 当然也可以 ...

  8. 【转】解决在Android设备播放音频与其他应用重音的问题,并监听耳机的控制按钮

    概述 在安卓开发中免不了需要播放一点音乐了,音频了.但是这时候有别的应用正在播放,这时候就会出现重音的现象,完全影响用户体验,我们的项目就遇上了这样的尴尬,然后查找了一些文档,记录一下: 管理音频焦点 ...

  9. cocos2d-x开发记录:二,基本概念(骨骼动画)

    九,骨骼动画 1.骨骼动画vs Sprite sheets 你能使用sprite sheets 创建动画,它很快又容易.直到你意识到你的游戏需要大量的动画并且内存消耗越来越高,并且需要时间载入全部数据 ...

随机推荐

  1. JSP 2秒跳转到首页

    <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%><h ...

  2. js弹出新窗口居中

    方式1: <script language="javascript"> var newUrl = <%=newUrl % > //window.locati ...

  3. K Smallest Sums

    uva11997:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...

  4. Delphi文件映射

    http://www.cnblogs.com/key-ok/p/3429860.htmlhttp://www.cnblogs.com/key-ok/p/3380793.htmlhttp://www.c ...

  5. Delphi中的THashTable

    在Delphi中,Inifiles单元中有一个TStringHash的类,不过它的Value仅支持Integer(其实也不是问题,有其它类型可以将变量变为Pointer),有点不舒服,今天没事做就把它 ...

  6. iostat 使用说明

    LINUX [oracle@perass back]$ iostat -m 1 10 Linux 2.6.18-194.el5 (perass) 03/01/2014 avg-cpu: %user % ...

  7. VS2010中fatal error LNK1123错误的解决方案

    问题描述: 在VS2010项目编译时会出现如下错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方案: 查找是否有两个cvtres.exe ...

  8. Linux Shell编程(7)——变量赋值

    =赋值操作符(它的左右两边不能有空白符) 不要搞混了=和-eq,-eq是比赋值操作更高级的测试.注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符.例子:简单的变量赋值 #!/b ...

  9. 【转】EditText大小(长宽)的多种设置方式----不错

    原文网址:http://orgcent.com/android-edittext-ems-layout-minwidth-maxheight/ EditText大小的设置有多种方式,要想对每种方式运用 ...

  10. 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5491 题目大意: 一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在 ...