我的应用程序中有一个背景,但点击一个按钮应该会更改它并使用另一个。
我无法将它们全部添加到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