Greensock平台

转自:http://hi.baidu.com/bbjxl/blog/item/6e8c6c34e5d68c2e5ab5f56e.html

Greensock介绍:使用代码实现动画对于初学flash的人来说有点望而生畏,但是使用Greensock平台,可以使这编程一个简单而有趣的事情。Greensock包含TweenNano、TweenLite、TweenMax三个类,其中TweenLite作为该平台的基石,TweenNano是TweenLite的超级轻量级,其去掉了很多功能,但对于那些对swf体积要求苛刻的广告设计人员,TweenNano确是一个很好的选择;TweenMax为TweenLite的增强版,拥有更强的功能(如默认激活大部分插件),因而体积比较大……
官方英文教程及类库下载:
http://www.greensock.com/get-started-tweening/
TweenNano
特点:轻量级,压缩只有1.6K,可以实现TweenLite能够实现的功能,除以下几点:
1、不能激活插件和使用插件
2、不能实现复杂的序列sequencing(可以使用”delay”专有属性实现简单的序列)和TweenNano 实例不能够嵌入 TimelineLite 或 TimelineMax实例以实现团体groups管理。
3、重写模式更少,你可以覆盖或不覆盖同一对象上的其它动画效果,但是不能使用OverwriteManager来扩展动画的其他性能,也不能够AUTO, CONCURRENT, PREEXISTING, and ALL_ONSTART模式
4、相对TweenLite, TweenNano没有pause(), play(), resume(), restart(), reverse(), invalidate(), onStart, defaultEase, easeParams, currentTime, startTime, totalTime, paused, reversed, and totalDuration等方法和属性。
注意:
1. TweenNano(target:Object, duration:Number, vars:Object);第1个参数为你应用动画的对象,第2个参数为动画延续的时间,第3个参数包含你要应用动画的所有属性对象且该对象内属性顺序可以错乱;
2.如以字符串形式传入值,将使用相对值;
3.终止所有的动画,使用TweenNano.killTweensOf(mc);
4. TweenNano.from()使对象从参数设定的状况运动到当前状况。
专有属性:
delay : Number 
useFrames : false 
ease : Function 
onUpdate : Function 
onUpdateParams : Array 
onComplete : Function 
onCompleteParams : Array 
immediateRender : true 
overwrite : true 
公共属性:
duration : Number
target : Object
useFrames : Boolean
vars : Object
公共方法:
TweenNano(target:Object, duration:Number, vars:Object)
complete(skipRender:Boolean = false):void
delayedCall(delay:Number, onComplete:Function, onCompleteParams:Array = null, useFrames:Boolean = false):TweenNano  [static] 
from(target:Object, duration:Number, vars:Object):TweenNano  [static] 
kill():void
killTweensOf(target:Object, complete:Boolean = false):void  [static] 
renderTime(time:Number):void
to(target:Object, duration:Number, vars:Object):TweenNano  [static] 
例子:
import com.greensock.*; 
import com.greensock.easing.*;   
TweenNano.to(mc,2, {x:400, overwrite:false,delay:2});//默认情况下,建立一个新的动画将覆盖该对象其它动画,将overwrite设置为false将阻止这种覆盖行为。
TweenNano.to(mc, 5, {alpha:0.5, x:120, overwrite:false, ease:Back.easeOut, delay:2, onComplete:onFinishTween, onCompleteParams:[5, mc]});//透明度变为0.5,位置为x轴120,效果为Back.easeOut,不覆盖前面的动画,且在动画结束后调用onFinishTween函数
function onFinishTween(param1:Number, param2:MovieClip):void {
trace("The tween has finished! param1 = " + param1 + ", and param2 = " + param2);
}


使用范例:
TweenNano、TweenLite、TweenMax使用相同的语法格式,而且as3版本和as2版本形式也一致,只是在as2中将x,y,alpha(0-1),rotation修改为_x,_y,_alpha(0-100),_rotation。
1、导入类
import com.greensock.*;//也可以单个导入,flash会自动嵌入用到的类
import com.greensock.easing.*;
2、使用TweenLite完成制作的简单的缓动
TweenLite.to(mc, 1.5, {x:100});//经过1.5秒mc从当前移动到x轴100位置
3、可以对物体任意多个属性同时运用缓动效果,如对mc的多个属性运用动画
TweenLite.to(mc, 1.5, {x:100, y:200, alpha:0.5});//经过1.5秒mc从当前移动到x轴100,y轴200位置,透明度变为0.5
4、As2与as3的语法很相识,大部分只需要使用as2中属性的书写方式
TweenLite.to(mc, 1.5, {_x:100, _y:200, _alpha:50});//as2语法,当然as2中需导入as2的greensock类库
5、可以使用from()方法使mc从参数设定的状况转变到当前的状况:
TweenLite.from(mc, 1.5, {y:0, alpha:0});//1.5秒内将mc从y轴为0,透明度为0转变到当前的状态
      如果你习惯使用面向对象编程模式,可以使用存储引用的方式建立对象,然后方便地控制,灵活运用pause(), resume(), reverse(), restart()方法。
var myTween:TweenLite = new TweenLite(mc, 1, {x:100, y:200, alpha:0.5});//和使用TweenLite.to()等效
专有属性:即为TweenNano、TweenLite或TweenLite认可的保留关键字,有着特定的用途,如onComplete, ease, overwrite, paused, useFrames, immediateRender, onStart, onUpdate, onCompleteParams,
ease: 缓动方程式,可以使用com.greensock.easing包、flash自身的或Robert Penner的缓动类
overwrite :设定缓动是否覆盖
useFrames :设定是基于帧还是基于seconds,默认为false
onComplete :设定缓动结束后调用的函数
immediateRender:使用form()方法时是否在delay之前就设置到初始位置
TweenLite.to(mc, 1.5, {x:100, ease:Elastic.easeOut, delay:0.5, onComplete:myFunction}); 
function myFunction():void { 
    trace("tween finished"); 
}
使用插件:可以将插件看作为TweenLite能够动态添加具有额外功能的特别属性,TweenLite默认情况下没有激活插件(TweenMax默认为激活),当激活插件后,对TweenLite、TweenMax都产生作用。
使用插件首先需要导入插件,另外需要激活,将需要激活的插件传递给activate方法的参数数据就行了。
import com.greensock.plugins.*;
import com.greensock.*;
import com.greensock.easing.*;
TweenPlugin.activate([GlowFilterPlugin,AutoAlphaPlugin]);
TweenLite.to(mc, 0.5, {x:277, y:311,autoAlpha:0.9, glowFilter:{color:0x91e600, alpha:1, blurX:30, blurY:30}, ease:Cubic.easeInOut});
覆盖其它缓动:默认情况下,TweenLite将覆盖之前所有的缓动,要使TweenLite使用AUTO模式,只要加上下面的一行代码:
OverwriteManager.init(2)
    注:上面的代码具有全局影响,如果只需要对单独的缓动使用AUTO模式,可使用下面的代码
TweenLite.to(mc, 1, {x:100, overwrite:2}); 
//TweenLite.to(mc, 1, {x:100, overwrite:true});
控制缓动:当你建立缓动后,可以使用pause() resume(), reverse(), play(), restart(), invalidate(), or kill()开对它进行操作。
var myTween:TweenLite = new TweenLite(mc, 1, {x:100, y:100}); 
myTween.pause(); //暂停
myTween.resume(); //恢复
myTween.reverse(); //反转
myTween.play(); //开始
myTween.restart(); //重新开始
myTween.invalidate(); //清除初始值
myTween.kill(); //取消
TweenLite.killTweensOf(mc);//取消所有


代码解析:
import com.greensock.*;
import com.greensock.easing.*;
TweenMax.to(mc, 3, {alpha:0.5});//mc经过3秒透明度变为0.5
TweenMax.to(myButton, 2, {scaleX:1.5, scaleY:1.5, ease:Elastic.easeOut});
//mybutton经过两秒扩张为原来的1.5倍,使用Elastic.easeOut动画效果
TweenMax.from(mc3, 1, {y:"-100", alpha:0}); //mc3从相对该位置-100经过1秒运动到该位置,且透明度变为0
TweenMax.fromTo(mc4, 1, {x:100}, {x:300, tint:0xFF0000}); //mc4从x为100移动到x为300的地方,且颜色变换为0xFF0000
TweenMax.to(mc, 5, {delay:3, x:300, ease:Back.easeOut, onComplete:onFinishTween, onCompleteParams:[5, mc]}); 
//延迟3秒后mc在5秒内移动到x为300的位置,动画效果为Back.easeOut,并在完成后调用onFinishTween函数
function onFinishTween(param1:Number, param2:MovieClip):void {
 trace("The tween has finished! param1 = " + param1 + ", and param2 = " + param2);
}
TweenMax.delayedCall(2, myFunction, ["myParam"]); //延迟2秒后调用myFunction函数
//tween every MovieClip in the "letters" Array up 100 pixels (changing their "y" property to a relative value of "-100") over 2 seconds while fading out, and stagger the start time of each tween by 0.1 seconds. There could literally be hundreds of MovieClips in the "letters" Array and this one line of code would tween them all! 
TweenMax.allTo(letters, 2, {y:"-100", alpha:0}, 0.1);
//use the object-oriented syntax to create a TweenMax instance and store it so we can reverse, restart, or pause it later. Make it repeat twice with a 1-second delay between each repeat cycle. 
var myTween:TweenMax = new TweenMax(mc2, 3, {y:200, repeat:2, repeatDelay:1, onComplete:myFunction});
//some time later (maybe in by a ROLL_OUT event handler for a button), reverse the tween, causing it to go backwards to its beginning from wherever it is now. 
myTween.reverse();
//pause the tween 
myTween.pause();
//restart the tween 
myTween.restart();
//make the tween jump to its halfway point 
myTween.currentProgress = 0.5;

很多制作flash的人摒弃flash自带的Tween缓动类,而是采用功能更加强大的第三方缓动类,其中用的最多是TweenMax类,这就不得不提greensock官方网站,这个网站是我迄今为止看到提供教程资料最全最直观的缓动类,flash演示文件可以直接显示出代码书写方法并且直观的查看效果,很适合初学者学习使用。 官方网站只提供免费的资源,其它更高级的功能都是收费的,以下是我在几个外国网站收集整理的收费插件,其中整理出的有: 1.舞台布局插件,它的强大在于你再也不用设置舞台尺寸侦听设置每一个元件的位置,一行代码解决问题; 2.变形操作,有点像PS里的变形操作,暂时还不知的应用到什么项目,不过功能很强; 3.动态文本操作,这个功能是我一直期待的,以前一直想用代码操作动态文本里所有字出现的特效,而不用在一个字一个字的去操作,没想到用这个插件实现了,官方提供了3种字出现时的特效,文本里的字出现的效果都是不一样的,若自己的代码编写能力强,可以扩展思维,写一个更强的效果。 现在第三方动画类都出了时间轴动画的功能,可以用代码直接代替时间轴了,这个是很值得研究的,可以大大提高项目开发速度,建议多多研究包内的Timeline类。例如我的网站:http://www.flashme.cn/里面80%都是用程序控制元件编写动画了(打个小广告^_^),不过我这个网站用的是GTween缓动类,有小bug才决定学习greensock的TweenMax类。 ------ 截止2011-6-19在网上搜集整理的greensock包类插件最新版本(仅是能找到的免费资源来说)。 demo 里的是官方演示文件,这几个插件你在官方网站是下不到啦,只能下载到他公布的免费插件,此插件的作者更新速度非常之快,你可以时时留意一下官方网站:http://www.greensock.com/ 至于免费开放的缓动类及演示文件,你可以关注一下官方网站,上面有很多演示及源文件。 layout布局类的值传递和官方演示文件写法有些差异,可能还不是最新的版本!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值