tween.js 在它的 GitHub 上对内容方法描述上的描述真的不尽人意,只有一份英文的指南和简单的功能描述,但还好有大佬把指南翻译成了中文这样学起来才轻松了些, tween.js 包里面有一些官方提供的实例但对于初学者的我来说真的不够直观 , 这里我把官方的实例和方法进行了整合,写了份 vue + three.js + tween.js 的动态案例供大家参考参考 😄
-
tween.js 是什么?
tween.js是一款可生成平滑动画效果的js动画库 , 你只需要告诉tween你想修改什么值,以及动画结束时它的最终值是什么,动画花费多少时间等信息,tween引擎就可以计算从开始动画点到结束动画点之间值,来产生平滑的动画效果 , tween.js不仅仅可以在HTML页面中使用也可以直接用于three.js的mesh中用于控制模型的动画效果简单而又方便
-
起步 vue 中创建一个简单的动画案例
npm i @tweenjs/tween.js@^18 //下载tween.js
const TWEEN = require('@tweenjs/tween.js') //vue 中定义一个TWEEN的常量
...
addTweenEsa(mesh) { //核心代码 mesh 是使用three.js 建立的一个网格模型
this.EsaTween = new TWEEN.Tween(mesh.position)
.to({x: 30,y: 0,z: 30}, 2000) //改变当前模型的位置
.delay(1000) //开始时的延迟
.yoyo(true) //是否开启yoyo循环
.easing(TWEEN.Easing.Elastic.InOut) //运动曲线
.repeat(Infinity) //重复次数
this.EsaTween.start() //开启动画
},
...
-
补间功能方法
-
start
开启补间动画 ,new TWEEN.Tween().start(time), start 方法接受一个参数 time , 如果加入参数,那么补间不会立即开始直到特定时刻才会开始 -
stop
关闭补间动画new TWEEN.Tween().stop(), 关闭这个正在执行的补间动画 -
repeat
控制补间重复的次数new TWEEN.Tween().repeat(), repeat 它接受一个参数 , 描述第一个补间完成后 需要多少次重复 -
yoyo
控制补间重复的模式 ,new TWEEN.Tween().yoyo(), 这个功能只有在使用 repeat 时才有效果 , 补间的 行,为将像悠悠球一样来回运动 , 而不是重新开始 -
delay
控制补间开始前的延迟new TWEEN.Tween().delay(), 补间开始之前的延迟时间接受一个参数用于控制具 体时间 -
pause
暂定补间动画new TWEEN.Tween().pause(), 暂停当前补间运动 -
resume 恢复补间动画
new TWEEN.Tween().resume(), 恢复这个已经被暂停的补间运动 -
to
控制补间的运动形式及方向new TWEEN.Tween().to(), 当tween启动时,Tween.js将读取当前属性值并 应用相对值来找出新的最终值
-
-
补间操作方法
-
update
更新补间动画TWEEN.update(), 动态更新补间运动一般配合window.requestAnimationFrame使用 -
getAll
获取所有的补间组TWEEN.getAll() -
removeAll
删除所有的补间组TWEEN.removeAll() -
add
新增补间TWEEN.add(tween)(tween) 添加一个特定的补间var tween=new TWEEN.Tween() -
remove
删除补间TWEEN.remove(tween)(tween) 删除一个特定的补间var tween=new TWEEN.Tween() -
Group 新增一个补间组
var Group=TWEEN.Group(),new TWEEN.Tween({ x: 1 }, Group), 将已经配置 好的补间进行分组 ,TWEEN.update()和TWEEN.removeAll(), 不会影响到已经分好组的补间
-
-
补间回调函数
-
onStart()
new TWEEN.Tween().onStart((obj)=>{}), 补间开始时执行,只执行一次, 当使用 repeat() 重复补间 时,不会重复运行 ,onStart((obj)=>{})obj 补间对象作为第一个参数传入 -
onStop()
new TWEEN.Tween().onStop((obj)=>{}), 当通过 onStop() 显式停止补间时执行,但在正常完成时并且在停止任何可能的链补间之前执行补间',onStop((obj)=>{})obj 补间对象作为第一个参数传入 -
onUpdate()
new TWEEN.Tween().onUpdate((obj)=>{}), 每次补间更新时执行,返回实际更新后的值,onUpdate((obj)=>{})obj 补间对象作为第一个参数传入 -
onComplete()
new TWEEN.Tween().onComplete((obj)=>{}), 当补间正常完成(即不停止)时执行 ,onComplete((obj)=>{})obj 补间对象作为第一个参数传入
-
-
缓动函数:TWEEN.Easing
tween.js提供了一些现成的缓动函数,例如 线性,二次,三次,四次,五次,正弦,指数,圆形,弹性,下落和弹跳,然后还有对应的缓动类型:In (先慢后快) Out (先快后慢) 和 InOut (前半段加速,后半段减速) , 这里我把这些缓动函数整理成了动态实例放在了我的 GitHub 中 ,官方提供的包里面也有实例路径是 : tween.js-master\examples\03_graphs.html 这里介绍了所有的缓动函数 ,当然我的图也是根据官方提供的做的 😋
-
总结
本文只是简单的介绍了补间工具的用法 , 更加深入的用法等以后有空了做出实例之后在来慢慢介绍 😄
本文 Gitee 示例地址
本文 GitHub 示例地址
tween.js 中文使用指南
tween.js GitHub地址
tween.js 动画效果文章
-
结束语
现在感觉做前端是真的难 , vue3 ,vite 各种东西不停的冒出来,不学就跟不上时代 ,学了就要考虑重构以前的代码, 想想都头疼 ,但是也没什么办法毕竟落后就要挨打,我们只能不停的前进 😂 ,这篇文章只是总结了常用的功能和方法 ,本人才疏学浅有什么不足的地方还请多多包涵。