最有效的方法是将UIView子类化以创建动画UIImageView

时间:2009-10-15 14:32:22

标签: iphone animation uiview uiimageview nstimer

我需要播放基于帧的动画。我用animationImages尝试了UIImageView,但它并没有让我对动画有任何控制权。我无法暂停它,我无法掩饰它,我无法知道当前帧等。

所以我将UIView子类化并创建了一些名为AnimationView的东西,它接受图像数组并使用NSTimer进行动画制作。在drawRect:然后我可以做所有的掩蔽和我想要的其他一切。

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

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

谢谢:)

2 个答案:

答案 0 :(得分:1)

this answerthis question中,Mo DeJong提供了一个指向手动动画PNG图像帧类的源代码实现的链接。他声称在非3GS iPhone上播放动画效果为480x320的15 FPS。

答案 1 :(得分:0)

NSTimer没问题。问题是你使用Quartz(drawRect:)在每一帧中使用CPU触摸大量像素。你要做的就是使用OpenGL,如果你必须使用掩码构图或在CALayers或CGImages中缓存你的图像。