TweenMax学习记录教程

网址

国外官网:https://www.tweenmax.com.cn/
中文文档:https://www.tweenmax.com.cn/api/tweenmax/

安装

引入链接:

<script src="js/greensock-js/TweenMax.min.js"> </script>

来源

请将x.x.x改成你需要的版本号,例如2.0.1
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/x.x.x/TweenMax.min.js"> </script>
或者
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.6.0/gsap.min.js"></script>
怀疑gsap库包含TweenMax动画

来源

使用场景以及文章须知

使用场景vue的created和mounted和methods中
o为老位置 n为新位置

target :缓动的对象例 .box  #box  this.$refs.box  dev或包含以上的数组
			设置运动的对象 单个或多个
duration: 动画时间
vars  :         动画参数
	alpha:透明度
	x:横坐标
	y:纵坐标
	rotation: 旋转 0 ~360
赋值 可直接给值 或使用函数 return 值 进行赋值 多针对多个对象 不同位置
{
  	cycle:{
      backgroundColor:["red", "white", "#00f"],
       x:function(index){
            if(index % 2 === 0){
              return 100
            }
            return  -100
          }
    }
 }
 也可使用 数组(循环赋值) 函数 判断返回赋值    值 直接使用
 
使用原理是使用css 进行动画
transform: matrix(1, 0, 0, 1, 100, 0);

动画

TweenMax() o => n

TweenMax的构造函数,用来构建一个TweenMax对象
TweenMax( target:Object, duration:Number, vars:Object ) ;
target:为对象
duration:时间
vars:n位置
var tween = new TweenMax('.box', 3, {
        x: 500,
        alpha: 0.3,
      });
      tween.delay(1);

weenMax.to() o => n

一个从当前属性到指定目标属性的TweenMax动画对象。
var myTween = TweenMax.to(".box", 1, {
  x: function(index, target) {
    console.log(index, target);
    return (index + 1) * 100 // 100, 200, 300
  }
})

TweenMax.from() n => o

通过设置动画起始点来初始化一个TweenMax,相当于动画从设置点开始。
TweenMax.from( target:Object, duration:Number, vars:Object ) : TweenMax
var myTween = TweenMax.from(".box", 3, {
  x: 500,
})

TweenMax.fromTo() n1 => n2 n1可以 == o n2也可以 == o

通过设置动画起始点和结束点来初始化一个TweenMax,相当于动画从设置点到第二个设置点。
TweenMax.from( target:Object, duration:Number, vars:Object ) : TweenMax
var myTween = TweenMax.from(".box", 3, {
  x: 500,
})

TweenMax.staggerTo() o => n s

为多个目标制作一个有间隔的动画序列,相当于多个TweenMax的数组。
TweenMax.staggerTo( targets:Array, duration:Number, vars:Object, stagger:Number, onCompleteAll:Function, onCompleteAllParams:Array, onCompleteAllScope:* ) : Array

TweenMax.staggerTo("li", 1, {rotation:360, x:100}, 0.5,(param)=>{
        console.log('跑完了');
      }, ["Complete"],window);
      TweenMax.staggerTo("li", 1, {rotation:360, x:100}, 0.5); 即可 
      每一个li间隔0.5秒后开始1秒的动画

TweenMax.staggerFrom() n => o s

通过设定序列动画的终点来初始化一组TweenMax。
TweenMax.staggerFrom( targets:Array, duration:Number, vars:Object, stagger:Number, onCompleteAll:Function, onCompleteAllParams:Array, onCompleteAllScope:* ) : Array

TweenMax.staggerFrom("li", 1, {y:-1000}, 0.5);
从y = -1000每隔0.5到初始位置

TweenMax.staggerFromTo() n1 => n2 n1可以 == o n2也可以 == o

TweenMax.staggerFromTo( targets:Array, duration:Number, fromVars:Object, toVars:Object, stagger:Number, onCompleteAll:Function, onCompleteAllParams:Array, onCompleteAllScope:* ) : Array
通过设定序列动画的起点和终点来初始化一个TweenMax。
TweenMax.staggerFromTo(objects, 1, {opacity:1}, {opacity:0}, 0.2);

TweenMax.delayedCall() 动画走一半执行的函数

TweenMax.delayedCall( delay:Number, callback:Function, params:Array, scope:*, useFrames:Boolean ) : TweenMax
提供一种在设定的时间(或帧)后调用函数的简单方法。
var myTween=new TweenMax('.box', 3, {
   x: 500,
})
var myTween2=TweenMax.delayedCall(2,myFunction,["参数1","参数2"])
function myFunction(param1, param2) {
  alert("延迟2秒输出"+param1+'和'+param2);
}

TweenMax.set() 使动画更3D效果

立即设置目标的属性值而不产生过渡动画,相当于0的动画时间
TweenMax.set( target:Object, vars:Object ) : TweenMax
设置父级元素,使其全部子元素产生3D效果 TweenMax.set(".wrapper",{perspective:200});
TweenMax.set(".nbox",{transformPerspective:300});      父级
TweenMax.to(".box", 3, {rotationY:360, transformOrigin:"left top"})    子级

初始化设置

delay :延迟秒数delay:3 延迟三秒 在n 中vars   使用
ease:滑动效果 例如Elastic.easeOut或 Strong.easeInOut。默认是Power1.easeOut。
  TweenLite中包含了基本缓动:Power0、Power1、Power2、Power3、Power4、Linear、Quad、Cubic、Quart、Quint、Strong,他们每个都含有.easeIn、.easeOut、.easeInOut参数(对于线性动画,请使用Power0.easeNone)。
  而TweenMax在此基础上还另外增加了特殊缓动:Elastic、Back、Bounce、SlowMo、SteppedEase、RoughEase、Circ、Expo、Sine。
  如果想在TweenLite中使用特殊缓动则需要加载缓动类easing/EasePack.min.js 。
paused:暂停 如果设置为true,动画将在创建时立即暂停。默认false
  可使用 tween.play();播放
immediateRender :立即渲染,默认false。有些动画是true 有些是false  不想立刻显然可设置为false
overwrite: 0 1 2 3 4 5  用来控制同一个对象上有多个动画时的覆盖之类的情况。6种模式
  用来控制同一个对象上有多个动画时的覆盖之类的情况。抹掉重复或者优化
useFrames :帧数变秒数
lazy:延迟渲染
autoCSS: 自动识别css对象
repeat :运动的次数 默认一次 两次就写1 三次就写2 。。。 无限期重复写-1
repeatDelay:运动重复之前的间隔时间  1间隔一秒后再重复
yoyo:动画是否往返进行 用于重复动画返回方式 是否
yoyoEase:返回时的动画 返回方式
startAt:动画属性开始时的值 适用于TweenMax
  new TweenMax('.box', 3, {
      x: 500,
      startAt: {x:200},//从200开始
  });
cycle :设置非常棒

事件设置

onComplete:在动画结束时触发此回调函数。
onCompleteParams:传递给onComplete函数的参数数组
onCompleteScope:函数的作用域
onReverseComplete:反向播放动画完成时执行此回调函数。
onReverseCompleteParams:传递给onReverseComplete函数的参数数组
onReverseCompleteScope:定义onReverseComplete函数的作用域
onStart:当动画开始渲染时执行此事件函数,有可能会被执行多次,因为动画是可以重复开始的
onStartParams:传递给onStart事件函数的参数数组
onStartScope:定义onStart函数的作用域,即函数内this的指向
onUpdate:当动画发生改变时(动画进行中的每一帧)不停的触发此事件。
onUpdateParams:参数
onUpdateScope:作用域
onOverwrite:当一个补间动画被另外一个补间动画覆盖时发生的事件
onRepeat:动画重复时(repeat)执行此事件函数。
onRepeatParams:参数
onRepeatScope:作用域

动画 设置

.play() 正方向播放 可设定开始的时间点 .play(2);
.pause() 暂停 可设置暂停时间点 .pause(2)
.paused() 获取是否暂停状态 可进行切换暂停/非暂停状态 myAnimation.paused( !myAnimation.paused() );
.restart() 重新开始动画/重头开始。tween.restart(true);如果有延时也将延时触发
.resume() 恢复播放而不改变方向(前进或后退),可选择首先跳到特定时间。 myAnimation.resume(2);
.reverse() 控制动画反向播放 控制动画末端往回1秒位置反向播放 .reverse(-1);
.reversed() 获取或设置动画的反转状态,指示是否应该反向播放动画 .reversed( true ); //设置反方向
.seek()  .seek(2); 不改变状态(播放、暂停、方向)的情况下直接跳转到某个时间点。.seek(2);

设置动画播放时间

duration():获取或设置动画持续的时间。
totalDuration 获取或设定全部重复的动画的持续时间。
.time() 获取或设置当前动画时间。
.totalTime() 获取或设置总的动画时长。
.progress() 获取或者设置单次动画的进程(从0到1)
.totalProgress() 获取或者设置总的动画进程(从0到1)
.delay() 获取或者设置动画的开始延迟秒数(帧)。
.invalidate() 新任何内部记录的开始/结束值,如果您想要重新启动动画而不恢复到以前记录的任何起始值,这将非常有用。
.repeat()  获取或者设定动画在第一次完成后的重复次数。
.repeatDelay( value:Number ) : *获取或者设置每次重复动画之间的间隔时间(秒)
.yoyo()  获取或设置补间动画的yoyo的状态。

TimelineLite 一点点 官网

页面元素挨个出来
var tl = new TimelineLite();
      tl.from(this.$refs.img, 1, {
				x: 100,
				opacity: 0
			});
      tl.from(this.$refs.h2, 1, {
				x: -100,
				opacity: 0
			});
      tl.from('.box', 1, {
				y: -100,
				opacity: 0
			});
      tl.from('.btn', 1, {
				y: 100,
				opacity: 0
			});
			// 也可使用以上动画设置重新展示或隐藏
			// 可制作数字动画
			var demo = {score:0}
			TweenLite.to(demo,20,{
					score:100,
					onUpdate:()=> {
						console.log(demo.score.toFixed(2))
					}
			})
	
	TimelineLite 是 GreenSock 公司开发的一个轻量级的时间线库,可以用来创建复杂的动画序列。以下是 TimelineLite 的文档:

	创建时间线
	可以通过以下方式来创建一个新的时间线:
	var timeline = new TimelineLite();
	
	添加动画
	可以通过 to()、from()、fromTo() 和 set() 方法来添加动画到时间线中。这些方法和 TweenLite/TweenMax 中的相应方法非常相似。例如:
	timeline.to(element, duration, {x: 100, opacity: 0.5});
	
	暂停和播放
	可以通过 pause()、resume()、restart() 和 seek() 方法来控制时间线的播放。例如:
	timeline.pause();
	timeline.resume();
	timeline.restart();
	timeline.seek(2); // 将时间线跳转到 2 秒的位置
	
	循环播放
	可以使用 repeat() 方法来循环播放时间线。例如:

	timeline.repeat(2); // 时间线将会重复播放两次
	
	反向播放
	可以使用 reverse() 方法来反向播放时间线。例如:
	
	timeline.reverse();
	回调函数
	可以使用 call() 方法来在时间线的指定位置执行回调函数。例如:
	
	timeline.call(myFunction, [param1, param2], thisObj, 1);
	事件
	可以通过 add() 方法来添加事件,时间线到达某个位置时会触发这些事件。例如:
	
	timeline.add(myFunction, 2);
	暂停和恢复单个动画
	可以使用 pause() 和 resume() 方法暂停和恢复单个动画。例如:
	
	var tween = timeline.to(element, duration, {x: 100});
	tween.pause();
	tween.resume();
	其他方法
	还有许多其他的方法可以使用,例如 kill()、invalidate()、timeScale() 等等。完整的文档可以在 GreenSock 的官网上找到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值