Tween是所有动画的实例,创建一个实例的方法有:

gsap.to();
gsap.from();
gsap.fromTo();

具体请参考gsap.to, gsap.from与gsap.fromTo详解。

例子:

let tween = gsap.to(".box", {duration: 2,y: 200
});tween.kill()

Tween属性详解

tween.data

存储数据。在vars参数里设置。 具体参考gsap.to, gsap.from与gsap.fromTo 详解中关于vars参数data的设置。
例子:

let tween = gsap.to(".box", {y: 200,data: {x: 10, y: 10}
});tween.data //{x: 10, y: 10}

tween.ratio (read-only)

在通过ease之后进程(介于0和1之间,其中0.5在中间,)。但是在ease为backelastic时,这个值有可能超过0-1的范围。
例子:

let easeFunc = gsap.parseEase("power2.out");
let tween = gsap.to({foo: 0}, {foo: 10, duration: 1, ease: "power2.out"});
tween.pause(0.5); // pause at 0.5 seconds which is halfway in this 1-second tweenconsole.log(tween.progress());           // 0.5
console.log(tween.ratio);                // 0.875
console.log(easeFunc(tween.progress())); // 0.875

tween.vars

传递到构造函数中的配置对象,包含所有要设置动画的属性。具体参考gsap.to, gsap.from与gsap.fromTo 详解中关于vars参数详解。


Tween方法详解

tween.delay()

设置或获取动画的延迟时间。
例子:

let delay = tween.delay(); //获取当前延迟
tween.delay(2); //设置延迟
  • tween.delay()
    获取动画的延迟时间。返回值:Number。
  • Tween.delay(value)
    • value(Number): 延迟时间。
    • 返回值:Tween(Self)

设置动画的延迟时间。

tween.duration()

设置或获取动画的时长。

let duration = tween.duration(); //获取当前时长
tween.duration(2); //设置时长
  • tween.duration()
    获取动画的时长。返回值: Number
  • tween.duration(value)
    设置动画时长。

    • value(Number): 时长值。
    • 返回值:Tween(Self)

tween.endTime()

根据父时间轴返回动画的完成时间。
例子:

let timeline = gsap.timeline();
let tween = gsap.to(".box", {delay: 1,duration: 2,y: 200
});
timeline.add(tween, 0.5);
tween.endTime(); //返回3.5

tween.eventCallback()

设置或过去事件回调。如onCompleteonUpdate等,以及传递给回调的参数。

  • tween.eventCallback(type)
    获取回调事件。

    • type(String): 回调的关键字。如onStartonCompleteonUpdate等。

例子:

let tween = gsap.to(".box", {y: 200,onUpdate: function(){console.log("onUpdate");}
});tween.eventCallback("onUpdate"); //返回设置的函数
  • tween.eventCallback(type, callback[, params])

    • type(String): 事件关键字。
    • callback(Function): 回调函数。 如果为null,则清除原有事件。
    • params(Array, 可选): 参数数组,任意类型。不传则无参数。
    • 返回值:Tween(Self)

例子1:

tween.eventCallback("onUpdate", function(p1, p2){console.log(p1); //"param1"console.log(p2); //"param2"
}, ["param1", "param2"]);

等效于:

let tween = gsap.to(".box", {y: 200,onUpdate: function(p1, p2){console.log(p1); //"param1"console.log(p2); //"param2"},onUpdateParams: ["param1", "param2"]
});

例子2:
清除动画原有的回调事件

tween.eventCallback("onUpdate", null);

tween.invalidate()

刷新动画的开始结束值。如果想重新启动动画,不还原到之前的开始结束值,这就非常有用。
返回值:Tween(Self)。
例子:
如果在restart()之前不执行invalidate(),那么动画每次都是从0运动到100。而执行了invalidate(),动画每次都会刷新开始结束值,动画将0->100, 100->200, 200->300 …

gsap.to(".box", {duration: 2,y: "+=100",onComplete: function(){this.invalidate();this.restart();}
});

tween.isActive()

获取动画是否处理活动状态(播放状态)。 返回值: Boolean

tween.iteration()

获取或设置动画的迭代次数。

  • tween.iteration()
    获取迭代次数,返回值:Number。

例子:

gsap.to(".box", {duration: 2,y: "+=100",repeat: 5,onStart: function(){console.log(this.iteration() + "/onStart");},onRepeat: function(){console.log(this.iteration() + "/onRepeat");}
});
/// console 输出
1/onStart
2/onRepeat
3/onRepeat
4/onRepeat
5/onRepeat
6/onRepeat

由于onRepeat只会在repeat时调用,所以这里用onStart来打印次数。

  • tween.iteration(value)
    设置迭代次数。

    • Value(Number): 次数。
    • 返回值: Tween(Self)

例子:

tween.iteration(2);
///输出
3/onRepeat
4/onRepeat
5/onRepeat
6/onRepeat

tween.kill()

根据参数完全或部分终止动画。立即停止动画,并从其父timeline中删除动画并释放。返回值:Tween

  • tween.kill()
    完全终止动画
  • tween.kill(target[, propertiesList])
    • target(String|Array|Object): 需要停止特定目标的动画,参考gsap.to的targets参数。
    • propertiesList(String): 需要停止动画的特定属性。例如:“x,y”,“rotate”。

例子1:
停止第一个box的动画。 支持选择器文本(具体可参考document.querySelectorAll()的用法)

tween.kill(".box:nth-child(1)");

例子2:
停止id=box2的动画,或同时停止2个box的动画。

let el2 = document.getElementById("box2");
let el4 = document.getElementById("box4");
tween.kill(el2);
tween.kill([el2, el4])

例子3:
停止所有动画的x,y动画。

tween.kill(null, "x,y");

例子4:
前5个box停止y动画

tween.kill(".box:nth-child(-n+5)", "y")

tween.pause(atTime, suppressEvents)

暂停动画,可以选择跳到特定时间。

  • atTime(Number, 可选): 动画跳到的指定时间,如未指定,则暂停在初始位置。默认值:null。
  • suppressEvents(Boolean, 可选): 如果设置true, 当移动到指定位置时,不触发任何回调事件。默认值:true。
  • 返回值:Tween。

例子:

tween.pause(); //暂停动画
tween.pause(1); //移动到1秒位置,并暂停动画
tween.pause(1, false); //移动到1秒位置,并暂停,且可以出发相关回调

tween.paused(value)

获取或设置动画的暂停状态。

  • value(Boolean,可选):想要设置的暂停状态,不指定该参数,则返回当前暂停状态。
  • 返回值(Boolean|Tween):不设置参数,则返回暂停状态,设置参数,则返回Tween。

例子1:

tween.paused(); //返回暂停状态
tween.paused(true); //设置暂停状态

例子2:
若有一按钮,点击开始动画,再点击暂停动画,来回切换。

tween.paused(!tween.paused());

tween.play(from, suppressEvents)

开始播放,可以选择从指定时间开始播放。默认是从当前位置播放。

  • from(Number): 指定开始播放的时间(位置)。不指定该参数,则从当前所在位置播放。默认值:null
  • suppressEvents(Boolean, 可选): 如果为true, 则当移动到指定位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true
  • 返回值:Tween

例子:

tween.play();  //开始播放
tween.play(2); //从2秒位置开始播放
tween.play(2, false); //从2秒位置开始播放,并且触发相关回调

tween.progress(value, suppressEvents)

获取或设置动画的进度,该进度之介于0和1之间,其中0处于开始位置,0.5处于一半的位置,1处于完成位置。

  • value(Number): 进度值,介于0和1之间。
  • suppressEvents(Boolean, 可选):如果为true, 则当移动到指定位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true
  • 返回值(Number或Tween):如果不指定value参数,则返回当前的进度值(Number),若指定则返回Tween。

例子:

tween.progress();  //返回0.3,当前的进度值
tween.progress(0.5); //设置播放进度为0.5
tween.progress(0.5, false); //设置播放进度为0.5,且触发相关回调

tween.repeat(value)

获取或设置动画的重复次数。

  • value(Number): 重复次数。
  • 返回值(Number或Tween): 如果不指定value参数,则返回重复次数(Number),或指定则返回Tween。

例子:

tween.repeat(); //返回重复次数
tween.repeat(2); //设置重复2次

tween.repeatDelay(value)

获取或设置动画每次重复之间的延迟秒数。

  • value(Number): 延迟秒数。
  • 返回值(Number或Tween): 如果不指定value参数,则返回当前的重复延迟秒数(Number),若指定则返回Tween。

例子:

tween.repeatDelay(); //返回重复延迟时间
tween.repeatDelay(2); //设置重复延迟时间为2秒

tween.restart(includeDelay, suppressEvents)

重新播放动画。

  • includeDelay(Boolean): 重新播放动画是否遵守延迟(如果有)。例如,如果tween有1秒的延迟,那么restart后是否也需要延迟1秒才开始播放动画。默认值:false,不遵守延迟,设置true,则遵守延迟。
  • suppressEvents(Boolean, 可选):如果为true, 则当移移动到开始位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true。
  • 返回值:Tween

例子:

tween.restart(); //立即开始播放,不遵守延迟
tween.restart(true); //遵守延迟
tween.restart(true, false); //遵守延迟,并触发相关回调

###tween.resume()
继续播放动画。一般再暂停后使用。等效与tween.paused(false)

tween.reverse(from, suppressEvents)

反向播放动画。

  • from(Number或String): 开始反向播放的时间或位置。如果为指定,则从当前位置反向播放。设置0则从动画最后开始方向播放。也可以指定位置标签(String)。
  • suppressEvents(Boolean, 可选):如果为true, 则当移动到播放位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true
  • 返回值:Tween

例子:

tween.reverse();  //从当前位置反向播放
tween.reverse(2);  //从2秒的位置反向播放
tween.reverse(0);  //从动画结尾处反向播放
tween.reverse("-=1"); //从动画结尾前1秒的位置反向播放

tween.reversed(value)

获取或设置动画的反向播放状态。

  • value(Boolean): 指定反向播放状态。
  • 返回值(Boolean或Tween):如果不指定value参数,则返回反向状态,如果指定则返回Tween。

例子1:

tween.reversed(); //获取反向状态
tween.reversed(true); //设置反向状态为true

例子2:
若有一按钮,点击动画反向播放,再点击则正向播放,来回切换。

tween.reversed(!tween.reversed());

tween.seek(time, suppressEvents)

跳转到特定的时间,而不影响动画是否暂停或反向。

  • time(Number或String): 需要跳转到的特定的时间(Number),或需要跳转到的标签(在timeline中使用,这里不说明)。
  • suppressEvents(Boolean, 可选):如果为true, 则当跳转到特定位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true。

例子:

tween.seek(2); //跳转到2秒的位置
tween.seek(2, false); //跳转到2秒的位置,且触发相关回调

tween.startTime(value)

获取或设置动画在其父时间线上的开始时间(延迟之后)。

  • value(Number): 设置的开始时间,省略参数将返回当前的开始时间。
  • 返回值(Number或Tween):省略参数返回当前时间(Number),否则返回Tween。

例子1:

let tl = gsap.timeline();
let tween = gsap.to(".box", {duration: 2,delay: 3,y: 500
});
tl.add(tween);
tween.startTime(); //返回3

例子2:

let tl = gsap.timeline({delay: 2
});
let tween = gsap.to(".box", {duration: 2,delay: 3,y: 500
});
tl.add(tween);
tween.startTime(); //返回3

例子3:

let tl = gsap.timeline();
let tween = gsap.to(".box", {duration: 2,delay: 3,y: 500
});
tl.add(tween, 2);
tween.startTime(); //返回5

由上面例子1和2看来,startTime不包含父时间轴的延迟,但是由例子3看来,设置动画在父时间轴的位置却包含在内。这是因为,父时间轴延迟后才开始播放,而tween在父时间轴播放3秒后开始,所以startTime在父时间轴上是3秒时才开始。而将tween增加到2秒的位置,虽然和延迟2秒效果一样,但是这时父时间轴已经跑了2秒,加上tween的延迟,那么tween开始时间一共是在父时间轴播放后的第5秒。

tween.targets()

目标对象的数组。由创建动画时候gsap.to(targerts, vars)的targets参数决定。

tween.then(callback)

返回一个promise(参考JS的promise)。在tween或timeline结束后调用callback。和onComplete效果一样。

  • callback(Function): tween或timeline结束后调用。
  • 返回值:Promise

例子:

gsap.to(".box", {duration: 2,y: 200
}).then(function(){console.log("complete");
})

tween.time(value)

获取或设置动画的当前时间。不包括任何的重复和延迟。

  • value(Number): 设置动画的时间。
  • 返回值(Number或Tween):如果指定参数value, 则返回Tween,否则返回当前时间。

例子1:
当动画运行过程中,tween.time()返回当前时间(0和2之间),不包含延迟或重复。当动画运行完后,tween.time()返回2。

let tween = gsap.to(".box", {delay: 3,duration: 2,y: 200,repeat: 5
});

例子2:
这里和tween.seek非常类似,但是他们的区别在于:seek是包含重复,如例子3。

tween.time(1); //播放头设置在1秒处,从此处开始播放

例子3:

let tween = gsap.to(".box", {duration: 2,y: 200,repeat: 5
});
tween.time(2); //运动5次
tween.time(10); //运动5次
tween.seek(10); //运动1次

该例子一共运动6次(1次+重复5次),每次开始的时间为0,2,4,6,8,10。tween.time不包含重复,参数只能是0和2(duration)之间。超过2则都按duration计算。所以从2秒开始动画都会重复5次。而seek是包含重复,所以seek从10秒开始就只是最后一次重复。

tween.timeScale(value)

获取或设置动画的播放速度。1为正常速度,2为双倍速度,0.5为半速播放。

  • value(Number): 播放速度。
  • 返回值(Number或Tween):不指定参数value,则返回当前播放速度。指定参数,则返回Tween。

例子:

tween.timeScale(); //返回当前播放速度
tween.timeScale(2); //设置2倍播放
tween.timeScale(0.5); //设置慢速播放

tween.totalDuration(value)

获取或设置动画的总时长。包括重复或重复延迟。

  • value(Number): 动画总时长。
  • 返回值(Number或Tween): 不指定参数value,则返回当前时长。指定参数,则返回Tween。

例子1:
(原本一次动画时长 2)+(2次重复 22)+( 2次重复延迟 1 2)= 8秒
可见是不包含delay。(因为动画在3秒后开始,并未计入时间轴)

let tween = gsap.to(".box", {delay: 3,duration: 2,y: 200,repeat: 2,repeatDelay: 1
});
tween.totalDuration(); //返回8秒

例子2:
继续例子1,将totalDuration设置4,缩短一半。 动画的duration将会被压缩。

tween.totalDuration(4);

tween.totalProgress(value, suppressEvents)

获取或设置总进度。该值介于0和1之间。0在开始处,0.5播放一半,1播放完毕。

  • value(Number): 总进度值。
  • suppressEvents(Boolean, 可选):如果为true, 则当跳转到特定位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true。
  • 返回值(Number或Tween): 不指定参数,则返回当前进度值。指定参数,则返回Tween。

例子1:
返回当前的总进度值。

tween.totalProgress();

例子2:
一共运动3次,totalProgress(0.5)运动了1次半。

let tween = gsap.to(".box", {duration: 2,y: 200,repeat: 2
});
tween.totalProgress(0.5);

tween.totalTime(time, suppressEvents)

获取或设置当前时间(播放头的位置),包含重复或重复延迟。

  • time(Number): 要设置的当前时间。
  • suppressEvents(Boolean, 可选):如果为true, 则当跳转到特定位置时,不触发相关回调。若为false,则触发相关回调。 默认值: true。
  • 返回值(Number或Tween): 不指定参数value,则返回当前时间。指定参数,则返回Tween。

例子1:
播放完成后调用tween.totalTime()返回8, 包含了重复和重复延迟。在动画过程中调用tween.totalTime()则返回0到8的中间值。

let tween = gsap.to(".box", {duration: 2,y: 200,repeat: 2,repeatDelay: 1
});

例子2:
总第5秒的位置播放。

tween.totalTime(5);

tween.yoyo(value)

获取或设置动画的yoyo状态,设置true,则动画将会往复运动,每次重复时交替。

  • value(Boolean): 需要设置的yoyo状态。
  • 返回值(Boolean或Tween):不指定参数value,则返回当前yoyo状态。指定参数,则返回Tween。

例子:
需配合repeat使用。

let tween = gsap.to(".box", {duration: 2,y: 200,repeat: 5,yoyo: true
});
tween.yoyo(); //返回yoyo状态
tween.yoyo(false); //设置yoyo状态

GSAP教程之tween.duration()和tween.totalDuration()的区别
GSAP教程之tween.time()和tween.totalTime()的区别
GSAP教程之tween.progress()和tween.totalProgres()的区别

GSAP教程之Tween详解相关推荐

  1. Vue 进阶教程之:详解 v-model

    分享 Vue 官网教程上关于 v-model 的讲解不是十分的详细,写这篇文章的目的就是详细的剖析一下, 并介绍 Vue 2.2 v-model 改进的地方,然后穿插的再说点 Vue 的小知识. 在 ...

  2. Java多线程之volatile详解

    Java多线程之volatile详解 目录: 什么是volatile? JMM内存模型之可见性 volatile三大特性之一:保证可见性 volatile三大特性之二:不保证原子性 volatile三 ...

  3. 多线程之callable详解

    多线程之callable详解 面试有人会问:线程的实现方式有几种? 很多人可能回答:2种,继承Thread类,实现Runnable接口. 很多忽略了callable这种方式. 也许有人知道callab ...

  4. Java并发编程之CyclicBarrier详解

    简介 栅栏类似于闭锁,它能阻塞一组线程直到某个事件的发生.栅栏与闭锁的关键区别在于,所有的线程必须同时到达栅栏位置,才能继续执行.闭锁用于等待事件,而栅栏用于等待其他线程. CyclicBarrier ...

  5. GSAP教程之gsap.utils详解

    gsap.utils提供了非常实用的方法集合,其中过很多可以返回函数,以便直接在tween中使用,特别是多对象动画时,将会每个目标调用一次,而不是为每个目标使用相同值. 例子: 为每个目标动画调用ra ...

  6. Android编程之SparseArrayE详解 Android编程之SparseArrayE详解

    Android编程之SparseArray<E>详解 分类:Android2012-09-01 13:139412人阅读评论(5)收藏举报 android编程delete存储list 最近 ...

  7. Android 网络编程之HTTPS详解

    前言:HTTPS涉及相关的知识,总是很难的将其归纳总结起来,本文旨在带你学习详细的HTTPS相关知识点,看完本文后,你会了解到以下相关知识点: HTTPS的工作原理 HTTPS为什么要这样设计 密码学 ...

  8. 并发编程专题——第二章(并发编程之Synchronized详解)

    日常中我们都会用到Synchronized关键字,但是面试就喜欢问这些,你说不重要吧,面试就不问了,你说重要吧,工作中除了高并发之外,很少能在业务代码中使用到的.所以笔者顶着风险,写下此篇对Synch ...

  9. Java并发编程之ConcurrentLinkedQueue详解

    简介 在并发编程中我们有时候需要使用线程安全的队列.如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法.使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两 ...

  10. Java并发编程之AQS详解

    一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQ ...

最新文章

  1. hdu 5385 The path
  2. BZOJ2888 : 资源运输
  3. Android踩坑日记:Okhttp设置User-Agent你可能没遇到的坑
  4. pythonurllib微博登陆是什么_而不是使用urllib登录网站http.clien
  5. 浅谈程序的核心--复杂度
  6. python基础学习_转行零基础该如何学习python?很庆幸,三年前的我选对了
  7. 编写运行java的步骤,【简答题】编写运行Java程序需要经过哪些主要步骤? (30.0分)...
  8. 58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)
  9. 克罗谈投资策略04_感觉与现实
  10. 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到4
  11. linux系统串口dmx512,基于stm32实现DMX512协议发送与接收详解
  12. 【已解决】libcef.dll怎么修复?libcef.dll丢失怎么办电脑上总显示
  13. 基于web的大数据可视化平台
  14. 华为连接wifi显示wifi未连接服务器,华为路由器wifi连接上不能上网怎么办?
  15. Power BI 企业邮箱账户注册
  16. matlab研究微分方程,基于MATLAB的微分方程求解电路仿真实验研究与实现
  17. paperJS中使用lab,lch等颜色
  18. elasticsearch学习笔记--聚合函数篇
  19. 图床云存储项目课程随堂笔记
  20. 【题解】[POI2006」Tet-Tetris 3D

热门文章

  1. word怎么压缩文件大小,word压缩变小
  2. 微信向移动开放平台又迈进了一大步:微信开放平台更新
  3. 关于五险一金(南京)
  4. 鹏城实验室“鲲鹏”人才引育计划(2022-2025年)
  5. ScanContext 论文详解 - 用途:Lidar SLAM 回环检测、空间描述符
  6. 永恒之塔人最多的服务器,[官方]永恒之塔新增服务器最新列表
  7. STM32CubeMX+Proteus仿真DS18B20
  8. 有效沟通bic法则_善用BIC法则,负面回馈不怕引起反弹!
  9. html中如何使阴影正片叠底,两种方法让你的PPT做出「正片叠底」的效果!
  10. 酷睿i9 12950HX怎么样 相当于什么水平