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人点赞

进阶



  • 2018-12-04 15:31:15

    iOS--Pod install && Pod update

    许多人在最初接触CocoaPods时认为pod install只是在第一次为项目设置CocoaPods时使用,之后都应该使用pod update.看起来是这样,但也不是(But that's not the case at all.)。 这篇文章的目的就是教你啥时候用pod install,啥时候用pod update

  • 2018-12-04 15:33:19

    CocoaPods安装和使用教程

    当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重新加入到项目中,十分麻烦。如果能有什么工具能解决这些恼人的问题,那将“善莫大焉”。所以,你需要 CocoaPods。

  • 2018-12-04 23:37:37

    pod install 和 pod update

    当我们新建一个Podfile文件运行后,会自动生成一个Podfile.lock文件,Podfile.lock文件里存储着我们已经安装的依赖库(pods)的版本。 当我们第一次运行Podfile时,如果对依赖库不指定版本的话,cocoapods会安装最新的版本,同时将pods的版本记录在Podfile.lock文件中。这个文件会保持对每个pod已安装版本的跟踪,并且锁定这些版本。

  • 2018-12-04 23:40:26

    pod删除已导入的第三方库和移除项目中的cocoapods

    CocoaPods是一个负责管理iOS项目中第三方开源库的工具。CocoaPods的项目源码在Github上管理。在我们有了CocoaPods这个工具之后,只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后在命令行执行$ pod install命令。CocoaPods就会自动将这些第三方开源库的源码下载下来,并且为我的工程设置好相应的系统依赖和编译参数. 但是如果我们导入的某个第三方不适用,或者我们又不想使用该第三方,那我们又该如何将这些相关的东西从我们的项目中清理出去呢?

  • 2018-12-04 23:41:47

    制作自己的Pod库(公有/私有)

    目的:1.管理自己常用的类;2.组件化开发步骤:1.想一个比较酷的名字,在桌面简历文件夹。2.打开terminal,cd到这个文件夹下面,执行pod lib create  xxx(这里我们以JJCategoryKit为例子,下同)命令,如下图。这个过程会问几个问题,根据实际情况输入回答即可。这里我们选择添加demo,结束的时候会自动Lanuch这个app. 作者:深水日月 链接:https://www.jianshu.com/p/ece0b5721461 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 2018-12-05 06:08:26

    CocoaPods建立私有仓库 spec repo

    好多项目里都有公共的组件,copy来,copy去很容易出错,而且不容易维护,所以就想到用用cocoapods 建自己的私有库,Carthage用法虽然相对简单,但是它是把公共组件都放在framework里不容易单步调试,所以我还是选择用Cocoapods 来建立私有仓库 参考使用Cocoapods创建私有podspec

  • 2018-12-05 15:11:18

    为什么 Objective-C非常难

    作为一个Objective-C的coder,我总能听到一部 分人在这门语言上抱怨有很多问题。他们总在想快速学习这门语言来写一个App出来,但他们也总是联想到Objective-C看上去实在太难了或者在想这 些语法符号都是神马玩意?不错,他们问得非常好,所以本人也解释一下为什么很多程序员相比较学习Ruby或者Java很容易,但在决定开发iOS或者OS X应用时会那么犹豫。

  • 2018-12-05 15:22:23

    十分钟让你明白Objective-C的语法(和Java、C++的对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。

  • 2018-12-05 15:33:33

    一篇文章看懂有关iOS开发语言的一切!

    OS开发语言有哪些?OS开发语言主要包括什么?iOS开发语言具体怎么学习?今天重点介绍一下: iOS开发语言主要包括:C语言基础、Obiective-C编程、Swift、UIKit框架详解这几大块,在这里项目阶段就不详细的介绍了。 C语言基础 C语言是开发语言的基础,是最常用的一门程序设计语言,最常用于编写计算机程序。

  • 2018-12-06 10:03:36

    定时杀掉processlist sleep状态的线程

    由于程序设计的Bug,导致目前这个项目使用的数据库中有很多Sleep状态的线程。找了很多解决办法,还没发现最终有效的解决方案。只能临时使用如下方法: 编写shell文件,如killSleepProcess.sh