Tween.js线性动画效果

2026-04-27 15:27:04 389
分类:js插件

1.简介

Tween.js是一款可生成平滑动画效果的js动画库,和jQuery.easing.js很多类似之处,主要的方法名也一致。

2.Tween.js动画

Tween.js允许你以平滑的方式修改元素的属性值。你只需要告诉tween你想修改什么值,以及动画结束时它的最终值是什么,动画花费多少时间等信息,tween引擎就可以计算从开始动画点到结束动画点之间值,来产生平滑的动画效果。

例子:

var tween = new TWEEN.Tween({x: 50, y: 0})
    .to({x: 400}, 2000)
    .easing(TWEEN.Easing.Elastic.InOut)
    .onUpdate(function (object) {
        output.innerHTML = 'x == ' + Math.round(object.x);
        var transform = 'translateX(' + object.x + 'px)';
        output.style.webkitTransform = transform;
        output.style.transform = transform;
    })
    .start();
function animate(time) {
    requestAnimationFrame(animate);
    TWEEN.update(time); //Tween.js本身不会运行,你需要通过update方法明确的告诉它什么时候开始运行。
}

3.控制动画

start 和 stop

开始和停止动画

update

通过TWEEN.update方法来执行动画的更新。

chain

链接一个动画,如果你想制作多个连续的动画,例如:一个动画在另一个动画结束后开始。可以通过chain方法来使实现。如下的代码,tweenB 在 tweenA 之后开始动画:

tweenA.chain(tweenB);

可以像下面这样制作一个无限循环的动画:

tweenA.chain(tweenB);
tweenB.chain(tweenA);

repeat

重复一个动画,如果想让一个动画链接到自己可以使用chain来实现,但是更好的方法是使用repeat方法。它接收一个用于描述你想循环多少次的参数:

tween.repeat(10); // repeats 10 times and stops
tween.repeat(Infinity); // repeats forever

yoyo

这个函数只在你使用repeat方法是起作用。当它被激活时,tween 的效果类似yoyo效果。该效果是动画会在开始或结束处向反方向反弹。

delay

delay方法用于控制动画之间的延时。

4.线性动画TWEEN.Easing

主要包含了:

  1. Linear:线性匀速运动效果;

  2. Quadratic:二次方的缓动(t^2);

  3. Cubic:三次方的缓动(t^3);

  4. Quartic:四次方的缓动(t^4);

  5. Quintic:五次方的缓动(t^5);

  6. Sinusoidal:正弦曲线的缓动(sin(t));

  7. Exponential:指数曲线的缓动(2^t);

  8. Circular:圆形曲线的缓动(sqrt(1-t^2));

  9. Elastic:指数衰减的正弦曲线缓动;

  10. Back:超过范围的三次方缓动((s+1)*t^3 – s*t^2);

  11. Bounce:指数衰减的反弹缓动。

每个效果都分三个缓动方式,分别是:

  • easeIn:从0开始加速的缓动,也就是先慢后快;

  • easeOut:减速到0的缓动,也就是先快后慢;

  • easeInOut:前半段从0开始加速,后半段减速到0的缓动。

详细查看上面的线性动画表。

5.回调函数

onStart

tween开始动画前的回调函数。

onStop

tween结束动画后的回调函数。

onUpdate

在tween每次被更新后执行。

onComplete

在tween动画全部结束后执行。