它是"重量"或重要的高度和宽度

时间:2014-10-14 06:12:27

标签: ios memory image-size

我正在为iOS平台开发一款包含大量图形的游戏。没有任何图形是动态的,它们都是现成的图像。屏幕上有6层,每层平均包含3-4个图形对象,它们不断向左滚动,每个图形具有不同的速度。因此,每次刷新屏幕时,大约有20-25个对象被滚动,从屏幕上移除并从右侧再次添加。游戏是通用的,因此资源文件夹中存在各种尺寸的图像。在iPad,iPhone 5,iPhone 5s上它变得流畅。但在第四代iPod touch上,我注意到了一些打嗝。  当我用仪器测试应用程序时,我注意到一个批评记忆问题,然后问题就消失了。所以这就是因为我在应用程序启动时加载了所有上述图形。所有图像组合成4个不同的精灵表。所以这是我的问题:   是重要的以千字节为重要还是尺寸?我问这个是因为我将图像的大小减小了大约70-80%,尽管它们的高度和宽度保持不变,但是内存问题仍然存在。

2 个答案:

答案 0 :(得分:1)

如果你是通过利用压缩缩小图像的大小,那么在第一次加载时图像是未压缩的时候会出现延迟和内存命中,并且它们将占用与压缩前一样多的内存。 / p>

第4代iPod Touch可能会有一些内存压力,它会尝试在其他地方释放内存,以便让你的图像加载并留在内存中。这可能是你看到的打嗝,因为其他应用程序,如Mobile Safari或Mail被要求放弃一些内存或终止。

(图像在资源文件夹中所占的大小是无关紧要的。它们在未压缩且内存中的大小是重要的。)

您可以通过将图像设置为4位而不是8位颜色来缩小图像,或者可以使图像变为单色。您也可以使用非视网膜尺寸或更小尺寸,然后让操作系统拉伸它们以适应所需的空间。我会首先尝试使用最好的图像,如果你收到内存警告(didReceiveMemoryWarning),那么重新加载密度较小的图像。

答案 1 :(得分:0)

你无法在游戏开始之前加载所有图像,你应该使用缓存来控制内存的大小。在游戏改变之前,释放缓存,重新加载需要的缓存。 因此,您必须在每个游戏场景中控制您的资源依赖。 这是管理大型资源应用程序的常用方法。