tweenjs简单快速学习

2020-02-22 17:45:43

参考地址 tweenjs学习

tweenjs 是使用 JavaScript 中的一个简单的补间动画库,支持数字、对象的属性和 CSS 样式属性的赋值。

tweenjs 以平滑的方式修改元素的属性值,需要传递给 tween 要修改的值、动画结束时的最终值和动画花费时间(duration),之后 tween 引擎就可以计算从开始动画点到结束动画点之间值,从而产生平滑的动画效果。

使用

  • tweenjs CDN

    https://cdnjs.cloudflare.com/ajax/libs/tween.js/17.1.1/Tween.min.js
  • tweenjs 下载到本地,密码是 ywoq

  • tweenjs github

  • tweenjs 实例

    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: 0, y: 0 };var tween = new TWEEN.Tween(coords) 
            .to({ x: 300, y: 200 }, 1000) 
            .easing(TWEEN.Easing.Quadratic.Out) 
            .onUpdate(function() { 
                box.style.setProperty('transform', 'translate(' + coords.x + 'px, '     + coords.y + 'px)');
            })
            .start();

示例说明

  1. 假设有一个对象 position ,它的坐标为 x 和 y

var position = { x: 100, y: 0 }
  1. 改变 x 的值从 100 到 200 ,持续时间为 1s

var tween = new TWEEN.Tween(position)tween.to({x: 200}, 1000)
  1. 创建 tween 对象后,激活它,从而让它开始动画

tween.start();
  1. 为了平滑的动画效果,需要在同一个循环动画中调用 TWEEN.update 方法

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

这个动作将会更新所有被激活的 tweens ,在 1s 内 position.x 将变为 200 。

  1. 可以使用 onUpdate 回调函数将结果打印到控制台上

tween.onUpdate(function(){
    console.log( this.x );})

这个函数在每次 tween 被更新时都会被调用

tweenjs 动画

Tween.js 本身不会运行,你需要通过 update 方法明确告诉它什么时候开始运行,推荐在动画主循环中使用该动画,可以调用 requestAnimationFrame 方法来获得良好的图像性能

使用无参数的调用方法,update 将明确当前时间。也可以为 update 方法法明确一个时间。

TWEEN.update(100);

update 的时间为 100毫秒 ,可以使用这种方法来明确代码中所有随时间变化的函数。

控制 tween 动画

  • startstop ==> Tween.startTween.stop 分别用来控制 tween 动画的开始和结束
    对于已经结束和没有开始的动画,Tween.stop 方法不起作用。 Tween.start 可以方法接收一个时间参数,若使用了该参数,tween 动画将在延迟该时间数后才开始动画,否则他将立刻开始动画。

  • update ==> 通过 TWEEN.update 方法执行动画的更新

  • chain ==> 制作多个多行,例如一个动画在另一个动画结束后开始,可以通过 chain 来实现

    tweenA.chain(tweenB);  //tweenB 在 tweenA 之后开始动画,故可以制作一个无线循环的动画tweenB.chain(tweenA);
  • repeat ==> 制作循环动画,优于 chain,接收一个用于描述循环次数的参数

    tween.repeat(10);tween.repeat(infinity);
  • delay ==> 用于控制动画之间的延迟

    tween.delay(1000);tween.start()

回调函数

可以在每次 tween 循环周期的指定时间点调用自定义的函数

  • onStart ==> tween 动画开始前的回调函数

  • onStop ==> tween 动画结束后的回调函数

  • onUpdate ==> 在 tween 动画每次更新后执行

  • onComplete ==> 在 tween 动画全部结束后执行

var tween = new TWEEN.Tween({}).to({}).onStart(function(){}).onUpdate(function(){})

动画运动算法(缓动函数)easing函数

  • Linear ==> 线性匀速运动效果

  • Quadratic ==> 二次方的缓动(t^2)

  • Cubic ==> 三次方的缓动()

  • Quartic ==> 四次方的缓动()

  • Quintic ==> 五次方的缓动

  • Sinusoidal ==> 正弦曲线的缓动()

  • Exponential ==> 指数曲线的缓动()

  • Circular ==> 圆形曲线的缓动()

  • Elastic ==> 指数衰减的正弦曲线缓动()

  • Back ==> 超过范围的三次方的缓动

  • Bounce ==> 指数衰减的反弹缓动

缓动方式(效果)easing类型

  • easeIn(In) ==> 加速,先慢后快

  • easeOut(Out) ==> 减速,先快后慢

  • easeInOut(InOut) ==> 前半段加速,后半段减速

使用公式

.easing(TWEEN.Easing.easing函数.easing类型)

tweenjs 源码

控制动画方法

缓动函数

6人点赞

进阶



  • 2020-02-20 18:35:21

    Vue加载组件、动态加载组件的几种方式

    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展。

  • 2020-02-22 13:58:50

    深入理解 requestAnimationFrame

    在Web应用中,实现动画效果的方法比较多,Javascript 中可以通过定时器 setTimeout 来实现,css3 可以使用 transition 和 animation 来实现,html5 中的 canvas 也可以实现。除此之外,html5 还提供一个专门用于请求动画的API,那就是 requestAnimationFrame,顾名思义就是请求动画帧。 为了深入理解 requestAnimationFrame 背后的原理,我们首先需要了解一下与之相关的几个概念:

  • 2020-02-22 17:35:14

    使用tweenjs写一个发牌的demo

    移动端h5的三大抽奖方式:转盘,老虎机,翻纸牌。 前两样demo比较多,用户也审美疲劳了。这次微信公众号要抽奖,于是调研了下翻纸牌。

  • 2020-02-22 17:45:43

    tweenjs简单快速学习

    tweenjs 是使用 JavaScript 中的一个简单的补间动画库,支持数字、对象的属性和 CSS 样式属性的赋值。 tweenjs 以平滑的方式修改元素的属性值,需要传递给 tween 要修改的值、动画结束时的最终值和动画花费时间(duration),之后 tween 引擎就可以计算从开始动画点到结束动画点之间值,从而产生平滑的动画效果。

  • 2020-02-22 17:47:12

    easeJs入门学习教程

    createjs中包含以下四个部分: EaselJS:用于 Sprites、动画、向量和位图的绘制,创建 HTML5 Canvas 上的交互体验(包含多点触控) TweenJS:用于做动画效果 SoundJS:音频播放引擎 PreloadJS:网站资源预加载

  • 2020-02-22 17:54:59

    最新FullCalendar中文文档

    Fullcalendar是一款用来管理日程安排、工作计划的日历工具,它功能非常强大而且非常实用。而目前网络上没有很好的中文文档,为了更好的和大家分享Fullcalendar的相关使用,即日起计划将Fullcalendar的英文文档翻译成中文版。