原文链接:http://learningthreejs.com/blog/2011/08/17/tweenjs-for-smooth-animation/
本篇介绍的Tween.js是使用tweening engine的非常简单快速的方法。它提供了完全成熟的补间动画。我们开始吧~!
首先来看个demo,这个demo包含了你会用到的基本参数,通过它你也能对tweening有个大概认识。
tweening是什么?
从维基百科来看,tweening就是inbetweening的缩写。我不知道为什么觉得很好笑也许inbetweening不是一个好的起始词。现在我们回到正题,什么是tween?就是指从源点到目标点之间的插值。tween会简单地生成位于区间内的值,问题是那些值放在哪里。这是通过简单的函数来完成的,你可以在这里看到这些函数。
首先引入库文件
下载地址:https://github.com/sole/tween.js
我们的例子同demo一样,完成在坐标轴上来回移动一个球体的效果,x坐标轴从0到400,y坐标轴从300到50.
首先我们定义原始的position和target值。position变量的值会被tween.js不断更新直到等于target值。我们创建一个tween对象来帮助我们完成这件事。
var position = { x : 0, y: 300 };
var target = { x : 400, y: 50 };
var tween = new TWEEN.Tween(position).to(target, 2000);
tween.onUpdate(function(){
mesh.position.x = position.x;
mesh.position.y = position.y;
});
让我们做更多的自定义吧~!延迟tween开始的时间500ms怎么样?
tween.delay(500)
tween.easing(TWEEN.Easing.Elastic.InOut)
现在我们需要告诉库参数已经配置好了,可以开始运行了。
tween.start();
TWEEN.update();
为动画链接Tweens
我们demo中的球不停地来回移动,是怎么做到的?我么需要链接tweens。它们将会依次执行。chain()提供了简单的方式来制造长效多样的动画。
/ after tweenHead, do tweenBack
tweenHead.chain(tweenBack);
// And after tweenBack, do tweenHead, so it is cycling
tweenBack.chain(tweenHead);
Have fun~!