cocos2d-x 在Android平台下,切入后台,从后台切到前台,cocos2d-x会重新加载纹理,截图(使用ccRenderTexture截图)和触摸失效
请问你解决了没有,我也遇到这样的问题,解决了请说一下
在网上找的资料,你试试:
需要修改三个文件:
- cocos2dx/platform/latformMacros.h
将Line84修改为 #define CC_ENABLE_CACHE_TEXTURE_DATA 0
macro
2)cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java
注释掉Line167。
comment
3)android工程目录下jin/hellocpp/main.cpp
注释掉Line32~43。
main
基本原理就是在activity进入后台后,不清除texture缓存,这样在activity回到前台后,不需要重新load资源。
我在自己的游戏上试了一把,修改之前切回游戏需要4秒左右时间,修改后不用1秒,可谓瞬间完成。
不过这个解决方案有些小问题,当有其他surfaceView的activity,比如集成了 Admob广告后,切回来时只能看到广告,而不显示游戏画面。有个老外Pablo Tonello回复帖子说没有集成Admob也遇到了这种情况。目前还不知道是啥问题,有待慢慢研究。
第一个文件没有找到,我用的是cocos2d-x3.0的,第二个文件找到了,第三个文件没有你说的那么多行,我的只有这些:
#include "AppDelegate.h"
#include "cocos2d.h"
#include "CCEventType.h"
#include "platform/android/jni/JniHelper.h"
#include
#include
#define LOG_TAG "main"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
using namespace cocos2d;
void cocos_android_app_init (JNIEnv* env, jobject thiz) {
LOGD("cocos_android_app_init");
AppDelegate *pAppDelegate = new AppDelegate();
}
那我就不清楚了,我没用3.0做项目,对3.0了解不多
遇见同样的问题,请问解决了没有,有的话求指导,多谢
在网上找的资料,你试试: 需要修改三个文件: 1) cocos2dx/platform/latformMacros.h 将Line84修改为 #define CC_ENABLE_CACHE_TEXTURE_DATA 0 macro 2)cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java 注释掉Line167。 comment 3)android工程目录下jin/hellocpp/main.cpp 注释掉Line32~43。 main 基本原理就是在activity进入后台后,不清除texture缓存,这样在activity回到前台后,不需要重新load资源。 我在自己的游戏上试了一把,修改之前切回游戏需要4秒左右时间,修改后不用1秒,可谓瞬间完成。 不过这个解决方案有些小问题,当有其他surfaceView的activity,比如集成了 Admob广告后,切回来时只能看到广告,而不显示游戏画面。有个老外Pablo Tonello回复帖子说没有集成Admob也遇到了这种情况。目前还不知道是啥问题,有待慢慢研究.
我用的是cocos2d-x2.2.2版本,其他版本我没试过,不清楚怎么回事.