2

我有一个带有方法的组件setPercentCompleted,我想在 1 秒内调用 500 个点的距离。

为了做到这一点,我只需将计时器设置为某个时间间隔,并setPercentCompleted在每次计时器触发时调用。

如何使用ease-out曲线实现此功能?

4

2 回答 2

1

这很像一个物理问题。

您需要以给定的“速度”和一定的“减速度”出发,以便在给定的时间(1.0 秒)内达到给定的“位移”(1.0)。

您需要确定的 2 个数字是初始速度和所需的减速度。

使用 SUVAT 并代入 s = 1 和 t = 1。

你从

s = ut + 1/2 * at^2

a = 2 - 2u

只要您的初始速度 (u) 和您应用的加速度 (a) 使这个等式有效,那么您将在 1 秒内达到 1 的距离。

您可以通过将数字放入电子表格来查看效果。您必须在 0 和 2 之间选择一个 u 值,这将提供在 1 秒内达到 1.0 所需的加速度。

你有你的 u 数量的起始值,然后每次加速它你的值。

事实上,在 0 和 1 之间选择 u 值会产生“缓入”效果。在 1 和 2 之间选择 u 值将产生“缓出”效果。

于 2012-12-17T18:05:17.673 回答
0

实现缓动函数有许多不同的方程。您可以从这个JQuery easing 插件中获得一些灵感。源代码应该足够简单,可以轻松地移植到 Objective C。

于 2012-12-17T18:25:00.860 回答