Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题
最近遇到一个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 骨骼动画注册事件播放音效,退到后台再返回黑屏问题的更多相关文章
- cocos2dx骨骼动画Armature源码分析(一)
源码分析一body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-to ...
- cocos2dx骨骼动画Armature源码分析(三)
代码目录结构 cocos2dx里骨骼动画代码在cocos -> editor-support -> cocostudio文件夹中,win下通过筛选器,文件结构如下.(mac下没有分,是整个 ...
- cocos2dx骨骼动画Armature源码分析(二)
flash中数据与xml中数据关系 上篇博文从总体上介绍了cocos2dx自带的骨骼动画,这篇介绍一下导出的配置数据各个字段的含义(也解释了DragonBone导出的xml数据每个字段的含义). sk ...
- cocos2dx AudioEngine在Android7上播放音效卡顿问题处理
1.此问题在cocos2dx 3.13/3.14版本(其它版本没有测试过)在Android7中使用AudioEngine的play2d函数播放音效时出现. 调试时出现如下提示: 2.论坛中相关讨论帖地 ...
- EasyPlayerPro Windows播放器全屏模式下GDI显示出现黑屏问题解决
问题来源 2017.12.21 前天有杭州某教育领域客户反馈有部分视频源在全屏模式下显示黑屏: 问题复现 EasyPlayerPro由于没有实现单个窗口完全全屏,故没有暴露该问题,晚上加班,加上单个窗 ...
- Android Activity切换(跳转)时出现黑屏的解决方法
在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在 ...
- cocos2dx - v2.3.3编辑器骨骼动画
接上一节内容:cocos2dx - v2.3.3编辑器简单使用及不同分辨率适配 本节主要Cocos骨骼动画的创建及使用 一.新建 用Cocos Studio工具新建一个状态栏项目.如下图: 当然也可以 ...
- 【转】解决在Android设备播放音频与其他应用重音的问题,并监听耳机的控制按钮
概述 在安卓开发中免不了需要播放一点音乐了,音频了.但是这时候有别的应用正在播放,这时候就会出现重音的现象,完全影响用户体验,我们的项目就遇上了这样的尴尬,然后查找了一些文档,记录一下: 管理音频焦点 ...
- cocos2d-x开发记录:二,基本概念(骨骼动画)
九,骨骼动画 1.骨骼动画vs Sprite sheets 你能使用sprite sheets 创建动画,它很快又容易.直到你意识到你的游戏需要大量的动画并且内存消耗越来越高,并且需要时间载入全部数据 ...
随机推荐
- A Knight's Journey
poj2488:http://poj.org/problem?id=2488 题意:给你一张地图,然后有一个骑士,骑士可以从地图的任意一个方格开始,作为起点,问你该骑士能否走遍整张题图.题解:首先想到 ...
- codeforces C. Mashmokh and Numbers
题意:给你n和k,然后让你找出n个数使得gcd(a1,a2)+gcd(a3,a4)+......的和等于k: 思路:如果n为奇数,让前n-3个数的相邻两个数都为1,n-2和n-1两个数gcd为k-an ...
- github上的一些Delphi开源项目
https://github.com/FMXExpress?tab=repositorieshttps://github.com/stars/maurobottahttps://github.com/ ...
- Linux [Ubuntu 12.0.1] 常用命令
1.文件名颜色的含义1)默认色代表普通文件.例:install.log2)绿色代表可执行文件.例:rc.news3)红色代表tar包 文件. 例:vim-7.1.tar.bz24)蓝色代表目录文件. ...
- 设置Git提交时不用输入用户名和密码
在用git提交时代码至github上时每次都要输入用户名和密码,当提交操作较为频繁时非常不方便,可以按下文中的介绍,设置成提交时不用输入用户名和密码: 1.在当前库下,已经运行过 git remote ...
- CGI编程完全手册
一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口.通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器 ...
- vtk 导出结果图片
项目中需要将渲染结果导出为图片. (1) 一开始搜了vtk的方法,发现: http://blog.csdn.net/lbluekey/article/details/3346312 http://w ...
- Elasticsarch及插件安装
Elasticsarch及插件安装 一.环境介绍与安装准备 1.环境说明 OS为Centos 6.5,elasticsearch-1.1.X.tar.gz, 注:mongo river ...
- HDOJ 2052 Picture
Problem Description Give you the width and height of the rectangle,darw it. Input Input contains a n ...
- [基础] C++与JAVA的内存管理
在内存管理上(总之一句话——以后C++工程,一定要用智能指针!) 1.同是new一个对象,C++一定得手动delete掉,而且得时刻记住能delete的最早时间(避免使用空指针).JAVA可以存活于作 ...