0

我的应用中有背景,但单击按钮应该会更改它并使用不同的背景。

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

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

谢谢

4

3 回答 3

2

删除所有未使用的数据。或者质地...

[[CCDirector sharedDirector] purgeCachedData];
[[CCTextureCache sharedTextureCache] removeAllTextures];
[CCTextureCache purgeSharedTextureCache];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];
于 2012-09-05T13:20:45.087 回答
1

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

[[CCTextureCache sharedTextureCache] removeUnusedTextures];

强制卸载不必要的纹理。

于 2012-09-04T11:16:37.670 回答
0

我设法不减慢应用程序速度的唯一方法是使用这条线:

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

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

于 2012-09-05T16:15:31.133 回答