cocos2dx程序 安卓下 切换到后台回来后 texture 的图片,失效 ,变成黑色的了

网上的方法CC_ENABLE_CACHE_TEXTURE_DATA 改成0,然后再注释一段代码;试了下回来后直接黑屏了

这什么要改成0呢?默认从后台切换到前台是会重建纹理 的。

在安卓手机上 程序回到后台,再进来,cctexture 画的图片都变黑了

cocos2d::CCSpriteFrame::createWithTexture(…)

你使用的引擎版本是多少? 引擎在Android前后台切换的时候会发送事件让纹理重新加载的,你搜索一下你使用的引擎里面有没有下面的代码:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    /** listen the event that renderer was recreated on Android/WP8 */
    CCLOG("create rendererRecreatedListener for GLProgramState");
    _backToForegroundlistener = EventListenerCustom::create(EVENT_RENDERER_RECREATED, (EventCustom*) { _uniformAttributeValueDirty = true; });
    Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_backToForegroundlistener, -1);
#endif
```

版本是2.2.3的 ,需要如何改么

谢谢子龙山人,知道问题在哪里了:安卓下返回是会重建纹理,没有显示出来的原因是纹理没有加入到纹理缓存中;

好的,解决了麻烦把方案贴到论坛里面来吧。

这几天回家了,忘记贴解决方案了;有同学m我了,也没有看到这里再写下方案;

cocos2.2.3 安卓下切换到后台,使用texture->initWithImage(xxx);设置纹理,后台回来后图片变黑;
第1个方案 不要使用这个版本了,当然很多以前项目 就参考下面的方案;
第2个方案 不要使用initWithImage,直接用图片创建texture;这样自动会加载到纹理里面,就不会出现这个问题了;
第3个方案 必须使用initWithImage 来初始化纹理的 ,则需要使用哪个addUIImage把纹理 这样会添加到纹理缓存里面;
建议使用第二个 简单;

如果还有什么疑问:http://blog.csdn.net/yitianljt/article/details/38978481 留言就行

还需要CC_ENABLE_CACHE_TEXTURE_DATA 改成0,然后再注释一段代码吗?方案二能够具体点吗?

从后台切回游戏重建纹理时,就会黑屏四五秒,网上有建议去掉重建纹理,比如https://github.com/cocos2d/cocos2d-x/pull/1758/files,但按照他的方法就会一直黑屏着,并且报opengl error 0x0502和501的错误,请问怎么解决,头疼了好几天了

遇到同样的问题,比如https://github.com/cocos2d/cocos2d-x/pull/1758/files,但按照他的方法就会一直黑屏着,是版本问题吧,cocos2dx不同版本间可能一直会有微调,都不一样啊啊

Hi, 我尝试了修改CC_ENABLE_CACHE_TEXTURE_DATA 和addUIImage两种方案都没能解决,由于项目很紧也不太可能转cocos2dx 3.x。谢谢大家能够提一些建议帮助!十分感激了!

项目环境:
cocos2dx 2.2.6,Nexus 5(4.4.4)/MiOne_Plus(2.3.5), NDK: r9b.

我顶顶顶顶。。。

:14::14::14:同样的问题顶起