我需要播放基于帧的动画。我用animationImages尝试了UIImageView,但它并没有让我对动画有任何控制权。我无法暂停它,我无法掩饰它,我无法知道当前帧等。
所以我将UIView子类化并创建了一些名为AnimationView的东西,它接受图像数组并使用NSTimer进行动画制作。在drawRect:然后我可以做所有的掩蔽和我想要的其他一切。
然而这种方法太慢了。我不能以30fps运行动画,甚至不能以10fps运行,我正在测试3GS。 (我只是在每一帧上进行掩蔽和混合:) - 并且使用相同的图像在UIImageView上以30fps的速度播放。)
那么,实现这一目标的最有效方法是什么? NSTimer是一个糟糕的选择吗?有更好的方法吗?
谢谢:)
答案 0 :(得分:1)
在this answer到this question中,Mo DeJong提供了一个指向手动动画PNG图像帧类的源代码实现的链接。他声称在非3GS iPhone上播放动画效果为480x320的15 FPS。
答案 1 :(得分:0)
NSTimer
没问题。问题是你使用Quartz(drawRect:
)在每一帧中使用CPU触摸大量像素。你要做的就是使用OpenGL,如果你必须使用掩码构图或在CALayers或CGImages中缓存你的图像。