了解动画中的帧

时间:2011-10-14 06:54:59

标签: iphone objective-c animation

动画中帧的含义和用法是什么?我明白它们与动画的平滑性有关。每秒显示的帧数越多,动画越平滑。使用动画构建应用程序(例如游戏)时,理论和使用指南是什么?目前,我区分了两种类型的2D动画:

a)基于帧的动画。基于恕我直言框架的动画只是使用定时器重新定位屏幕上的视图,并使用一些设置来平滑地进行移动。

b)基于补间动画的动画。恕我直言,这是涉及使用UIView animateWithDuration和其他类似方法的那些。

目前,我正在使用CADisplayLink作为我的应用的计时器。使用frameInterval = 2初始化计时器。调用一些方法,使用1个点值重新定位屏幕上的某些视图。我认为移动类型是基于帧的动画,它或多或少是平滑的。我不明白在那之下会发生什么,我的帧率等等是什么?当从x = 12移动(动画)到x = 13时,使用CADisplayLink以某种方式添加一些中间值(帧)吗?

我也在使用一些UIView animateWithDuration,所以我认为这是动画补间动画。我看到帧速率设置对我来说是保证的,我不需要对帧速率做任何明确的事情,对吧?

1 个答案:

答案 0 :(得分:1)

是的,当您使用标准动画调用时,例如animateWithDuration,您的代码不必担心帧速率。有可能动画可能无法像您希望的那样快速运行或者如您所愿的那样平滑,如果有太多非非透明对象在彼此之上绘制,或者您正在保留CPU / GPU忙于=其他方式。在这种情况下,你必须简化对象(例如使它们变得不透明)或做你自己的动画,可能诉诸于OpenGL。

至于关于帧速率的另一个问题,它基本上归结为可以在一秒钟内为动画中的每个步骤绘制所需的更改次数。您可能只需要进行15次绘制,以使动画看起来平滑,具体取决于移动量。一旦你知道你想要达到的最佳FPS数量,那么你就可以计算你的绘图代码,看看你是否能够在所需的时间内完成所需的工作。实际上,在开始计时之前,请尝试按照给出所需FPS的时间间隔进行绘图,并查看它的外观。如果你正在获得你想要的动画,你可能不需要担心计时。