在运行时切换cocos2d视网膜显示背景



我的应用程序中有一个背景,但点击一个按钮应该会更改它并使用另一个。

我无法将它们全部添加到sharedTextureCache中,因为每个缓存中的大小都大于16MB,而且我有30种不同的背景。

在没有加载时间的情况下切换背景的最佳方式是什么?我不希望用户在单击该按钮时等待。

感谢

删除所有未使用的数据。或纹理。。。

[[CCDirector sharedDirector] purgeCachedData];
[[CCTextureCache sharedTextureCache] removeAllTextures];
[CCTextureCache purgeSharedTextureCache];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];

如果您知道接下来将显示什么背景,您可以预先预加载它。每个视网膜设备可以使用大约100兆字节的存储器(大约5个子画面2048x2048)。在这种情况下,您开始收到内存警告,但应用程序将稳定工作。您可以异步对共享纹理缓存进行的所有预加载。只是不要忘记通过调用来清理未使用的纹理

[[CCTextureCache sharedTextureCache] removeUnusedTextures];

以强制卸载不必要的纹理。

我设法不放慢应用程序速度的唯一方法是使用以下行:

[_background setTexture: [[CCTexture2D alloc] initWithImage:...]]

当我尝试使用共享纹理缓存时,即使是异步,应用程序也会减慢速度。:-O

最新更新