1

我需要播放基于帧的动画。我尝试了 UIImageView 与 animationImages 但它没有让我对我的动画有任何控制。我不能暂停它,我不能屏蔽它,我不能知道当前帧等等。

所以我将 UIView 子类化并创建了一个名为 AnimationView 的东西,它采用图像数组并使用 NSTimer 来制作动画。在 drawRect: 中,我可以做所有的遮罩和我想要的一切。

但是这种方法太慢了。我无法以 30fps 的速度运行动画,甚至可能无法以 10fps 的速度运行,我正在 3GS 上进行测试。(我只在每一帧上进行遮罩和混合 :) - 并且使用相同的图像在 UIImageView 上以 30fps 的速度播放)。

那么,实现这一目标的最有效方法是什么?NSTimer 是一个糟糕的选择吗?有没有更好的解决方法?

谢谢 :)

4

2 回答 2

1

在这个问题的答案中,Mo DeJong 提供了一个指向手动动画 PNG 图像帧的类的源代码实现的链接。他声称在非 3GS iPhone 上为 480x320 图像动画获得 15 FPS。

于 2009-10-15T22:24:57.283 回答
0

NSTimer很好。问题是您在使用 Quartz (the drawRect:) 的每一帧中使用 CPU 触摸了很多像素。如果您必须使用蒙版合成图像,或者将图像缓存在 CALayers 或 CGImages 中,您想要做的是使用 OpenGL。

于 2009-10-15T17:38:08.437 回答