Write less code, do more things!
文档

指引

使用一个组件或模块之前,应当知道它能解决的问题是什么,不能解决的问题是什么。使用的最佳实践是什么?

接口设计和实现思路

常规动画主要需要以下参数

1. duration 时间
2. value 距离

精确控制时间和距离的动画

var motion = new Motion({
    duration: 1000,
    value: 360,
    onAction: function onAction (mount) { console.log(mount) }
})
motion.run()
// 匀速运行时则速度是 0.36
// 先快再慢的速度是先大于 0.36  然后小于 0.36

加/减速度动画需要以下参数

1. value 距离
2. startSpeed 起始速度
3. endSpeed 结束速度

精确控制速度和距离的动画

// 加速
var motion = new Motion({
    value: 180,
    startSpeed: 0,
    endSpeed: 0.1,
    onAction: function onAction (mount) { console.log(mount) }
})
motion.run()
// 减速
var motion = new Motion({
    value: 180,
    startSpeed: 0.1,
    endSpeed: 0,
    onAction: function onAction (mount) { console.log(mount) }
})
motion.run()

这两种动画的区别在于:常规动画可配置 duration。加/减速度动画不可配置 duration ,只能通过 startSpeed endSpeed 计算出 duration

一般我们用的是常规动画。某些情况下会用到加/减速度动画,比如转盘抽奖。

转盘抽奖分为三部分

1. 加速旋转
2. 匀速运动旋转 (AJAX 获取抽奖结果)
3. 减速旋转

持续匀速旋转需要用到


var motion = new MotionLogic({
    value: Number.MAX_SAFE_INTEGER,
    // 每毫秒运动 0.36
    startSpeed: 0.1,
    endSpeed: 0.1,
    onAction: function onAction (mount) { console.log(mount) }
})
motion.run()

{
    duration: 1000,
    value: 360
}

motion 会根据 duration value 自动计算出速度,1000/360 = 2.7 每毫秒运动 2.7

Github
face-motion - 项目源码
相关站点
module - 开源项目脚手架
onface.cc - 资源集合