我正在为iOS平台开发带有很多图形的游戏。没有图形是动态的,它们都是现成的图像。屏幕上有6层,每层平均包含3-4个图形对象,这些对象不断向左滚动,每个图形对象的速度不同。因此,每次刷新屏幕时,都会滚动约20-25个对象,将其从屏幕上删除,然后从右侧再次添加。该游戏具有通用性,因此资源文件夹中可以显示各种尺寸的图像。在iPad,iPhone 5,iPhone 5s上,它运行起来很流畅。但是在第四代iPod touch上,我发现有些打some。
当我使用Instruments测试应用程序时,我注意到启动时出现了评论者内存问题,然后问题消失了。这就是全部,因为我在应用程序启动时加载了所有上述图形。所有图像被组合成4个不同的Sprite表。所以这是我的问题:
是重要的重量(以千字节为单位)还是尺寸?我之所以这样问是因为我将图像的大小减小了约70-80%,尽管它们的高度和宽度保持不变,但是该内存问题仍然存在。
最佳答案
如果要通过压缩来减小图像的大小,那么由于图像在首次加载时不会被压缩,因此会存在延迟和内存占用问题,并且它们将占用与压缩之前一样多的内存。
第四代iPod Touch可能有一些内存压力,它将尝试释放其他位置的内存,以使图像加载并保留在内存中。这可能是您遇到的麻烦,因为其他应用程序(例如Mobile Safari或Mail)被要求放弃一些内存或终止。
(图像在资源文件夹中占用的大小无关紧要。重要的是它们在未压缩时和在内存中的占用大小)。
您可以通过使图像变为4位而不是8位彩色来缩小图像,也可以使其变为单色。您也可以使用非视网膜尺寸或更小的尺寸,然后让操作系统将其拉伸以适合所需的空间。我会尝试首先使用最佳的图像,如果收到内存警告(didReceiveMemoryWarning),然后重新加载密度较小的图像。