1

我正在尝试在我的应用程序中使用精灵表动画。第一个带有小精灵表的 POC 工作正常,但是当我将精灵表更改为更大的时,我收到“check_safe_call:无法恢复当前帧”警告并且应用程序退出。

快速搜索显示此问题意味着我的应用程序占用了太多内存或图像尺寸太大。

我的图像是 4.9 Mb,尺寸是 6720 * 10080(哎呀!!)。我读到 iphone 允许最大 3 Mb 图像,尺寸最大为 1024 * 1024。此外,精灵表图像尺寸应该是 2 的幂。

所以请让我知道如何使用这么大的精灵表。

一种方法是将精灵表切割成许多较小的精灵表,并一次使用它们。

请建议您是否知道任何其他/更好的方法来容纳更大的精灵表以及我的精灵表的问题是大小(4.9 Mb)还是尺寸(6720 * 10080)。

(仅供参考,我不想播放电影,所以使用 MP4 文件不是我的选择。我需要根据加速度计输入为精灵表设置动画,我已经能够在我的 POC 中使用较小的精灵表实现这一点.)

谢谢, 斯瓦普尼尔

4

2 回答 2

1

绝对将其保持在 2 的幂内。此外,将 spritesheet 中的精灵保存在 2 的幂的容器中(例如,你有一个 17x31 的精灵......把它放在一个 32x32 的容器中)。精灵表的问题在于 4.9mb 和尺寸。我会考虑使用 adobe 烟花或 pngcrusher 来大大降低精灵表的大小。

迈克韦勒关于拆分精灵表的权利(你根本不能最大 1024)。我认为最好的选择是将您对精灵表所做的事情重新组织成元素(尽管在不知道细节的情况下很难说)。只有移动的东西才应该有多个框架。通过调用精灵表上的位置并将它们扔到游戏中,将它们覆盖在背景上(来自同一个精灵表)。

于 2010-06-16T18:56:14.727 回答
1

您应该按照您的描述将精灵表切割成多个纹理。iPhone 的内存和图形芯片根本无法同时在内存中保存该大小的图像/纹理。通过拆分精灵表,它将在您使用它们时处理将适当的纹理加载/卸载到内存中。

您还可以考虑优化图像格式。使用 PVRTC 格式可以节省大量内存,但它仅适用于某些类型的图像。有关更多信息,请参阅此 Apple 页面

于 2010-06-01T07:23:26.877 回答