利用Tween让动画更平滑(补间动画)

我在  JavaScript 元素的滑动效果(一)JavaScript 元素的滑动效果(二)中用纯JS写的div动画滑动有卡顿,因为没有加入缓动函数,Tween封装了常用的缓动函数,所以正好利用一下。用Tween处理过的移动更加平滑(比德芙更丝滑)。

 

<!DOCTYPE html>
<html>

<head>
    <title></title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tween.js/17.1.1/Tween.min.js"></script>
</head>

<body>
    <div></div>
</body>
<script type="text/javascript">
var box = document.createElement('div');
box.style.setProperty('background-color', '#008800');
box.style.setProperty('width', '100px');
box.style.setProperty('height', '100px');
document.body.appendChild(box);

function animate(time) {
    requestAnimationFrame(animate);
    TWEEN.update(time);
}
requestAnimationFrame(animate);

var coords = { x: 800, y: 800 };//假设有一个对象 position ,它的坐标为 x 和 y
var tween = new TWEEN.Tween(coords)
    .to({ x: 300, y: 200 }, 2000)//改变 x 的值从 100 到 200 ,持续时间为 1s
    .easing(TWEEN.Easing.Quadratic.Out)
    .onUpdate(function() {//为了平滑的动画效果,需要在同一个循环动画中调用 TWEEN.update 方法
        box.style.setProperty('transform', 'translateX(' + coords.x + 'px');
    })
    .start();//创建 tween 对象后,激活它,从而让它开始动画
</script>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值