objective-c - 带有大图像的 Objective C iPad 动画 - 使用什么方法?

标签 objective-c core-animation cocos2d-iphone

我正在尝试在 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/

相关文章:

ios - 如何使用 Autolayout 为通用应用程序调整 UIView 的大小

objective-c - 奇怪的行为,编译错误 "expected specifier-qualifier list before ' CustomClass'"

ios - 对于iPad/iPhone apps,如何拥有一个数组点?

iphone - 适用于 iPhone 的 Sparrow 或 Cocos2D 2D 游戏?

ios - 使用 Objective C 在 Cocos2d 中展示 AdMob Reward 广告和插屏广告

ios - 核心数据未保存到 TableView

ios - 如果从外部调用,NSMutableArray 为空?

iphone - UIView 反射(reflect) CALayer 属性

jquery - 如何为动态创建的不同组件重用相同的代码?

iphone - 如何在运行时为 Cocos2D CCMenu menuWithItems 正确动态创建 va_list?