TweenMax学习笔记整理

简介:

因为要做一个案例,里面用到了很多动画,TweenMax真的是一个很强大的动画库,所以就学了一点里面的方法,现在整理出来


注意:这个动画库是基于jQuery的,所以使用前要先引入jQuery哦!

下面的所有方法都在TimelineMax对象下,要先得到动画实例,所以使用我下面的方法的时候要注意先写下面的代码:

var t = new TimelineMax();

用到的方法整理:

to():添加动画;

参数说明:

  1.    元素选择器或对象
  2.    持续时间
  3.    对象(变化的属性->值)
  4.    【可选】动画延迟发生的时间(可写数字,“-=0.5”,“+=0.5”)

一例胜千言,嗯,先看看下面的小实例


在这个例子中,等待1s后,元素"#div1"的left和width同时变化,left用时1s后到达目标点,width用时2s到达目标点,过1s钟高度开始变化,高度到达目标点后(用时2s),元素围绕z轴旋转180deg(用时2s),旋转后,透明度发生变化(用时2s)

注意:第四个参数是可选参数,如果我们没有写第四个参数,意味着,下面的动画执行都会在上一动画执行完之后开始执行,如果加了第四个参数,就是在上一动画的时间基础上加上或减少延迟时间(针对"+="或"-="),当然如果是数字num,那么

如果num>=0,那就是延迟num执行(注意:不是相对于前一个动画,而是相对于动画的开始时间哦),如果num<0,对于第一个t.to(),延迟负数就相当于0,第二个及以后的t.to,如果延迟时间小于0,则一打开页面运动已经执行完毕(看不到运动的过程)

2、staggerTo():添加动画
   参数说明:
1. 元素选择器或对象
2. 持续时间
3. 对象

变化的属性->值

                       4.【可选】一组动画间的延迟时间,数字


5. 【可选】一组动画整体延迟发生时间
可写数字,“-=0.5”,“+=0.5“

这个方法和t.to()方法语法和使用都一样,那两者不一样的地方就是,先看下面的例子吧!


在这个例子中,如果我们没有加第四个参数的时候,两者的效果是一样的,即所有的div都同时执行,然后同时到达目标点

但是如果我们加了第四个参数的话,使用t.to()方法的时候,所有的div还是同时执行,但是如果我们使用的是t.staggerTo(),后面的div都会等到前面的div执行完成之后再执行(不是一起执行,而是依次执行)

注意:个人比较建议使用这个方法,一般是针对一类元素,然后,第四个参数,如果为正数,代表正序执行,绝对值代表延迟时间,如果是负数,则表示倒序执行,绝对值也是延迟时间(个人测试得出的结论)

如果是不同的类别元素使用t.staggerTo()方法,我测试发现,其实第四个参数并不起作用,不管时间是多少,都是按照写的顺序依次执行,并且中间是没有间隔的

  1.   <div class="div1">div>

  2.   <div class="div2">div>

  3.   <div class="div3">div>



  1. $(function(){

  2.             var t = new TimelineMax();

  3.             t.staggerTo( ".div1",1,{width:300},2 );

  4.             t.staggerTo( ".div2",3,{height:300},0);

  5.             t.staggerTo( ".div3",1,{background:"blue"},-1);

  6.         });



  1. 上面的执行顺序是先div1宽度变化,然后div2的height发生变化,最后是div3的background发生变化


  2. 第五个参数,代表一组动画整体提前或延迟多少执行

上面的是我自己经过不断测试得出的结论,如果有什么地方不正确,欢迎指正哦

3、下面的比较好理解,看字面意思就知道了

stop():停止动画
play():开始动画
reverse():反向开始动画
onComplete():运动结束后触发对应的函数

onReverseComplete():反向运动结束后触发对应的函数

看例子吧





	
		
        
		
			#div1{
				width: 100px;
				height: 100px;
				background: red;
				position: absolute;
				left: 0;
				top:50px;
			}
		
		
		
		
			$(function(){
				var t = new TimelineMax();
                t.stop();
 
				t.to( "#div1",1,{left:300,onComplete:function(){
					alert("left:300")
				},onReverseComplete:function(){
					alert("反向left:0");
				}} );
				t.to( "#div1",2,{width:300,onComplete:function(){
					alert("width:300")
				},onReverseComplete:function(){
					alert("反向width:100")
				}} );
			
 
				$("#play").click(function (){
					t.play();		
				})
				$("#stop").click(function (){
					t.stop();		
				})
				$("#reverse").click(function (){
					t.reverse();		
				})
			})
		
	
 
	
		
		
		
		



注意:如果我们没有加t.stop()方法的时候,元素都是在打开页面后便开始执行动画,当我们加了t.stop()方法后,所有的的动画都不会执行,只有我们调用t.play()方法的时候,才会开始执行

4、add---添加状态

参数说明:
1. 字符串或一个函数
TweenTo---完成指定的动画(过渡)
参数说明:

1. 指定时间或状态的字符串

这两个方法一般都是结合使用的,所以先看例子呗




	
		
        
		
			#div1{
				width: 100px;
				height: 100px;
				background: red;
				position: absolute;
				left: 0;
				top:50px;
			}
 
		
		
		
		
			$(function(){
 
				var t = new TimelineMax();
 
					t.add("state1");
 
				t.to( "#div1",1,{left:300} );
				t.to( "#div1",2,{width:300} );
					t.add("state2");
				t.to( "#div1",3,{height:300} );
					t.add("state3")
 
				t.tweenTo( "state2" );
 
			})
		
	
 
	
 
		



注意:当我们使用t.tweenTo()方法的时候,即便我们添加了t.stop()方法,也不会影响t.tweenTo()方法的执行,比如在这个例子中,即便我们添加了t.stop()方法,页面在打开的时候,还是会立即执行到状态2

5、seek():完成指定的动画(无过渡)

参数说明:
1. 指定时间或状态
2. 【可选】布尔值
true:不执行函数  默认
false: 执行函数

和上面的t.tweenTo()方法很相似,不同的是,这个没有过渡效果,如果把上面的例子中t.tweenTo()方法换成t,seek()方法,结果就是一打开页面,元素的left和width就为300,看不多动画效果

5、下面两个很好理解了,就不啰嗦了

time():动画已执行的时间

clear:清除所有动画

6、
totalDuration():获取动画的总时长
getLabelTime():返回从开始到当前状态的时间
参数说明:
1. 状态的字符串
返回值是一个数字
currentLabel():获取当前状态

返回值是状态的字符串

没什么好解释的,看例子就都懂了





	
		
        
		
			#div1{
				width: 100px;
				height: 100px;
				background: red;
				position: absolute;
				left: 0;
				top:50px;
			}
 
		
		
		
		
			$(function(){
 
				var t = new TimelineMax();
						t.add( "state1" );
					t.to( "#div1",1,{left:300});
					t.to( "#div1",2,{width:300,onComplete:function(){
						getCurrentLabel();
					}} );
						t.add( "state2" )
					t.to( "#div1",3,{height:300,onComplete:function(){
						getCurrentLabel();
					}} );
						t.add( "state3" )
 
					alert( t.totalDuration() )
 
					alert( t.getLabelTime( "state3" ) )
 
					alert( t.currentLabel() )
 
					getCurrentLabel();
 
					function getCurrentLabel(){
						//alert( t.currentLabel() )
 
						alert( t.getLabelTime( t.currentLabel() ) )
					}
 
 
			})
		
	
 
	
 
		



7、getLabelAfter():获取下一个状态

参数说明:
1. 时间数字
返回值是状态的字符串,如果没有下一个状态返回null

getLabelBefore():获取上一个状态
参数说明:
1. 时间数字

返回值是状态的字符串,如果没有上一个状态返回null




	
		
        
		
			#div1{
				width: 100px;
				height: 100px;
				background: red;
				position: absolute;
				left: 0;
				top:50px;
			}
 
		
		
		
		
			$(function(){
 
				var t = new TimelineMax();
						t.add( "state1" );
					t.to( "#div1",4,{left:300});
					t.to( "#div1",5,{width:300,onComplete:function(){
						getCurrentLabel();
					}} );
						t.add( "state2" )
					t.to( "#div1",6,{height:300,onComplete:function(){
						getCurrentLabel();
					}} );
						t.add( "state3" )
 
					//alert( t.totalDuration() )
 
					//alert( t.getLabelTime( "state3" ) )
 
					//alert( t.currentLabel() )
 
					getCurrentLabel();
 
					function getCurrentLabel(){
						//获取当前的时间
						var currentTime = t.getLabelTime( t.currentLabel() );
						//获取到上一个状态
						var beforeLabel = t.getLabelBefore( currentTime );
						//获取到下一个状态
						var afterLabel = t.getLabelAfter( currentTime );
 
						var str = "<div>上一个状态:"+ beforeLabel +"</div><div>当前状态:"+ t.currentLabel() +"</div><div>下一个状态:"+ afterLabel +"</div>";
 
						$("#label").html( str );
 
					}
 
 
			})
		
	
 
	
		


原文发布时间:2018年06月18日

作者:冰雪为融

本文来源:CSDN  如需转载请联系原作者

目录
相关文章
|
12月前
|
数据采集 监控 大数据
大数据项目管理:从规划到执行的全景指南
大数据项目管理:从规划到执行的全景指南
215 4
|
机器学习/深度学习 人工智能 自然语言处理
MMAudio:开源 AI 音频合成项目,根据视频或文本生成同步的音频
MMAudio 是一个基于多模态联合训练的高质量 AI 音频合成项目,能够根据视频内容或文本描述生成同步的音频。该项目适用于影视制作、游戏开发、虚拟现实等多种场景,提升用户体验。
885 8
MMAudio:开源 AI 音频合成项目,根据视频或文本生成同步的音频
|
程序员 容器 内存技术
经验大分享:TweenMax参数用法中文介绍
经验大分享:TweenMax参数用法中文介绍
217 0
|
人工智能 Serverless API
云原生应用开发平台CAP评测
CAP(Cloud Application Platform)是阿里云提供的一站式应用开发及管理平台,集成了Serverless计算、AI应用模板、先进开发者工具和企业级应用管理功能。本文结合官方文档与实际操作,全面评测了CAP的产品优势、实际操作体验及性能表现,展示了其在降低成本、提高开发效率和灵活性方面的卓越能力。
|
网络性能优化 数据安全/隐私保护
什么是国际专线网络?国际专线网络的特点
国际专线网络是连接不同国家和地区的专用通信线路,提供高速、可靠的数据传输服务。它具备高带宽、专用通道、高安全性、广泛覆盖和服务质量保障等优点,适用于跨国企业和组织的高效通信需求。然而,其建设和维护成本较高,需综合考虑。
1140 3
阿里云域名收费标准(com/cn等不同后缀价格表)
阿里云域名多少钱一年?阿里云域名价格?域名后缀不同新注册价格、续费价格及转入价格也不同
|
JavaScript 前端开发 数据可视化
Three.js第2篇,加载glb / gltf模型,Vue加载glb / gltf模型(如何在vue中使用three.js,vue使用threejs加载glb模型)
Three.js 是一个用于在 Web 上创建和显示 3D 图形的 JavaScript 库。它提供了丰富的功能和灵活的 API,使开发者可以轻松地在网页中创建各种 3D 场景、模型和动画效果。可以用来展示产品模型、建立交互式场景、游戏开发、数据可视化、教育和培训等等。这里记录一下如何在Vue项目中使用Three.js
4403 4
Three.js第2篇,加载glb / gltf模型,Vue加载glb / gltf模型(如何在vue中使用three.js,vue使用threejs加载glb模型)
|
固态存储 开发者
阿里云服务器选购之国际版和国内版的平台对比及建议
阿里云服务器选购之国际版和国内版的平台对比及建议
|
Windows
如何快速安装FL Studio 21中文版win64_21.0.0.331水果编曲宿主daw 软件
编曲宿主DAW软件FL Studio21 简称FL,全称:Fruity Loops Studio21,因此国人习惯叫它"水果"。目前版本是FL Studio21.0.0.331,也是兔八哥爱分享使用版本。它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破想象力的限制。FLstudio21版本已经发布了,看了一下,还是蛮激动的有很多功能大改变 。
993 0
如何快速安装FL Studio 21中文版win64_21.0.0.331水果编曲宿主daw 软件
|
运维 数据管理 数据库
数据管理DMS产品使用合集之遇到报错:数据库账号没有权限执行,该如何排查
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
324 2