匀速直线动画
- 固定时间
- 固定距离
- 如何判定动画结束的时机?
- 使用时间来判断是否结束动画。
- 如果动画时间到达了 指定的时间,那么就结束动画,并且让动画元素到达终点
- 实现思路
- 定义动画函数,animate函数。当调用animate函数时,即动画开始的时间
- 定义render函数,用来给动画元素设置 属性值
- 计算当前动画元素所在的位置,然后累计到其对应属性值上。
- 首先计算动画的时间间隔
- 如果时间间隔大于或等于指定的总时间,那么就停止动画并设置动画元素到达终点
- 否则,根据速度,动画时间间隔计算出位移。在将其与起始位置累加后赋值给elem
- 定义定时器,开始动画
匀减速直线动画
- 物理公式
- a: 加速度
- t: 时间间隔
- v0:初始速度
- vt:末速度
- S: 位移
- 正方向:S = v0 t + a t * t / 2;
- 末速度:vt = v0 + at
- S ==> target - location
t ==> duration
v0 = 0 正方向 a = 2 ( S - v0 t) / ( t * t)
==> = 2 * S / ( t * t ) ==> = 2 * (target - location) /( duration * duration)
vt = 2 * (target - location) / duration
time时间间隔内的 匀减速位移tween = v0 time - a time time / 2
==> tween = 2 distance * time / duration- distance * time * time /( duration * duration)
动画的基本结构
|
|
animate动画的封装代码(曲线代码不是自己写的,哈哈)
|
|