0

我有一个 png 图像列表,我希望它们一个接一个地显示以显示动画。在我的大多数情况下,我使用 UIImageView 和动画图像,它工作正常。但在某些情况下,我的 png 是 1280*768(全屏 iPad)动画,有 100 多帧。我看到在模拟器上使用 UIImageView 非常慢(第一次加载时间太长),我相信如果我把它放在设备上它会更慢。

是否有任何替代方法可以非常流畅地显示图像序列?也许是核心动画?我可以看到任何工作示例吗?

4

3 回答 3

4

核心动画可用于基于矢量/关键帧的动画 - 而不是图像序列。在 iPad 上加载超过一百个全屏 PNG 是一个非常糟糕的主意,如果不是完全终止,您几乎肯定会收到内存警告。

您应该使用视频来显示这些类型的动画。性能会好很多。您有什么理由不能在动画中使用 H.264 视频吗?

于 2012-12-11T15:33:36.823 回答
3

为您的照片制作视频。这是最简单也可能是最合理的方法。

如果您想要真正好的性能和对动画的完全控制,您可以将图片转换为 pvrtc4 格式并使用 OpenGL 将它们绘制为广告牌(纹理精灵)。如果你不知道怎么做,这可能是很多工作。

于 2012-12-11T15:45:42.770 回答
0

看第二个例子

http://www.modejong.com/iPhone/

摘自http://www.modejong.com/iPhone/

还有 UIImageView.animationImages API,但是当使用超过几个大小合适的图像时,它会迅速占用所有系统内存。

我想展示一个持续 2 秒、15 FPS 的全屏动画,总共有 30 张尺寸为 480x320 的 PNG 图像。这个例子实现了一个面向动画的视图控制器,它只是等待读取一帧的 PNG 图像数据,直到需要它。

这个类没有分配许多兆字节,而是在大约 0.5 兆的内存中运行,在第二代 iPhone 上的 CPU 利用率约为 5-10%。此示例也已更新,包括在显示动画时可选择通过 AVAudioPlayer 播放音频文件的功能。

于 2013-01-19T05:50:42.667 回答