我正在尝试在 iPad 上构建一个天气应用程序,但似乎我需要一些动画方面的帮助。假设我正在为雷达制作动画,那么雷达源文件有 10 张 900x700 像素大小的 gif/jpeg 图片。我已经使用此处的教程尝试了 UIImage 动画技术:
http://www.icodeblog.com/2009/07/24/iphone-programming-tutorial-animating-a-game-sprite/
但似乎加载 10 张那么大的图像对于 iPad 来说太多了,并且由于内存警告而崩溃。我正在研究其他制作动画的技术,但我似乎找不到可以有效执行此操作的方法。
我看过其他人,例如使用 sprite 的 Core Animation 和使用 sprite 的 Cocos2D。有人可以指出正确的方向来制作这些大图像的最佳动画吗? (请记住,这些图像是动态的并且经常变化,因此必须在服务器上重新创建 Sprite 并从 iPad 获取以制作动画)。谢谢
最佳答案
OpenGL 只创建尺寸为 2 的幂的纹理。对于您的图像,这是 1024x1024,这是每幅图像 1 兆内存。尽管如此,这对 iPad 来说应该不是问题。
首先,调查使用 Xcode 的分析工具以确保图像不会在动画的每个循环中重复加载到内存中(可能通过不共享缓存纹理的新对象)。这可以从一开始就解决您的问题。
其次,如果只是为了便于处理纹理和缓存,我建议使用 Cocos2D。将图像放入 CCAnimation 中,将其弹出到 CCRepeatForever 中,然后使用 CCSequence 运行它。完成后点击 CCTextureCache 释放未使用的纹理。
第三,将动画帧速率降低到 30 或更低(如果仅针对此动画)。它可能是 iPad,但你制作了一个天气应用程序。不是电子游戏。
最后,降低图像的大小。证明你想要的一切都是合理的,但是一个大的雷达动画不会卖掉你的应用程序。仅仅因为网站可能已经在播放精美的动画,请记住台式机的内存和功能比任何智能手机都要多得多。
关于objective-c - 带有大图像的 Objective C iPad 动画 - 使用什么方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072105/