Moto.js —— 为动画而生

1,515 阅读1分钟

一、什么是 Moto.js

在介绍Moto.js前,先说一下Popmotion。日常开发中Popmotion用起来可以说是很舒服了, 直到有一天来了一个需求,大概要实现下面这样的效果:

最初打算接入物理引擎,这样效果逼真又省事。这就意味着,结果不可控。

最后,只能通过固定路径去实现了。路径点很容易确定,但是如何让小球沿着路径点平滑移动呢?

研究一下发现,Catmull Rom是个不错的选择。

Moto.js的雏形就此形成,封装了Catmull RomBezierCubic Bezier同时支持tweenchaincomposite。与Popmotion保持相同的调用方式。

二、如何使用

哎哟,不错的样子。怎么用呢?

安装

NPM 方式:

npm i @tuia/moto.js

script 引入:

<script src="//unpkg.com/@tuia/moto.js/dist/moto.min.js"></script>

开发

import {tween} from '@tuia/moto.js'

tween({
  from: 0,
  to: 100,
  duration: 1 // 单位: s
}).start(v => console.log(v))

用过Popmotion的同学一定会觉得:咦~~,这和Popmotion有什么区别?就是duration的单位从ms变成了s

曲线

当然不能只简单复制Popmotion的功能,毕竟初衷是简化开发过程中绘制曲线重复的工作量。所以上面的功能,只能算是额外的附赠品。

import {curve} from '@tuia/moto.js'

curve.catmullRom({
  points: [
    {x: 50, y: 50},
    {x: 100, y: 150},
    {x: 200, y: 100},
    {x: 300, y: 50},
    {x: 350, y: 150}
  ]
}).start(v => {
  // todo
})

对,上面的代码稍加修饰一下,就是下面的样子。

三、总结

Moto.js一个支持曲线运动的动画库。持续开发中,欢迎各位添砖加瓦。