【发布时间】:2016-08-12 11:17:15
【问题描述】:
简单来说,我想弄清楚如何将缓动应用于循环延迟。
for (i := 0; i < 114; i++) {
// do a task
time.Sleep(//delay before next job)
}
如您所见,这是非常基本的。假设我想在 3 秒内完成整个循环(作业完成时间可以忽略不计,t <= us)。使用 Penner 方程计算每次迭代的适当缓和延迟的正确方法是什么?
那么,使用这个函数,为了模拟从零速度开始的加速度,我应该如何在循环的每次迭代中使用t 参数来创建适当的睡眠延迟?
func easeInQuad(t float64) {
return math.Pow(t, 2)
}
如果您能帮助我解决这个问题,我将不胜感激。到目前为止,方程式还不是问题,而是如何在我的用例中使用它们。
我的问题一开始可能看起来像这样:Applying easing to setTimeout delays, within a loop 但是这个没有考虑循环的总时间。
但是,我认为使用重写为仅使用一个参数的方程可能会更好,范围为 [0,1]:https://gist.github.com/rezoner/713615dabedb59a15470
据我了解,我必须计算抽象的“已用时间百分比”,并以某种方式使用缓动函数插入该值。
这个 Node 项目似乎就是这样做的:https://github.com/CharlotteGore/animation-timer,但我还是不知道如何重现它。
【问题讨论】: