【问题标题】:Understanding frames in animations了解动画中的帧
【发布时间】:2011-10-14 06:54:59
【问题描述】:

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

a) 基于帧的动画。恕我直言,基于帧的动画只是使用带有一些设置的计时器重新定位屏幕上的视图,以使移动平滑。

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

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

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

【问题讨论】:

    标签: iphone objective-c animation


    【解决方案1】:

    是的,当您使用标准动画调用(如 animateWithDuration)时,您的代码不必担心帧速率。如果有太多不透明的对象被绘制在彼此之上,或者如果您保留 CPU /GPU 忙于=其他方式。在这种情况下,您将不得不简化对象(例如使它们不透明)或制作自己的动画,可能会求助于 OpenGL。

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

    【讨论】:

    • 谢谢,但是我怎样才能在不计时的情况下移动视图(“实际上,在开始计时之前,请尝试以能够为您提供所需 FPS 的时间间隔进行绘图,并查看它的外观")?
    • 我的意思是,在你开始衡量它所花费的时间之前,在你开始优化之前,看看它是如何做的以及它是否满足你的需求。你不需要开始计时和优化它们,除非你没有得到你想要的流畅动画。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多