代码改变世界

as3 T * ween

2009-10-11 11:55  宝宝合凤凰  阅读(1501)  评论(9)    收藏  举报

 

在以往用2做些网站类的应用的时候,经常由一个事件激活若干个tween动画,在2环境下的tween类我是用的网上下载的mxp扩展包来实现应用的:  mc.tween("_height",20,1.0,"easeOutQuad",0,callbackfuc);
在学习3的过程中自带的tween类写法发生了变化,这都好说,不过看到些文章谈到3里的tween如果同时由若干个tween对象一起动作的话,系统资源占用很大,甚至会停止动作,在2中,我还从来没有遇到这样的情况,哪怕我同时用了很多个tween动作。

还真是这样,我定义了多个TWEEN的时候,有些TWEEN自动放到一半的时候就自己中止不放了,又得做代码上的修改优化。不过后来发现可能不是这个原因,做的东西占系统资源应该不大。在网上查了查以后,发现也有人出现这样的问题——

http://bbs.actionscript3.cn/thread-5254-1-1.html

http://bbs.actionscript3.cn/thread-6132-1-1.html

最后得出的结论是—— FLASH自带的TWEEN类,偶尔会出莫名其妙的问题,原因往往是因为tween是在函数里声明的,所以会被垃圾回收站回收。回收后Tween还没有运动完,结果就停那不动了。

 

解决办法:

1: 声明为类变量就行了。在函数的外面定义好Tween变量。(将它提升为private的, 跳出那个函数的管辖),而不是在函数内部,这样不会回收。

2:   方法1只能暂时解决一些问题,因为你用的Tween是用的time模式, 这种模式当cpu执行构造一个超级肥的类时,这个Tween的时间在走, 但缓动得不到执行(没CPU嘛), 时间一到,Tween停止….但位置还没到位…..绝对能解决Tween没执行完就被干掉的问题的是: 不用time为true的模式,而用帧模式,至少我是这么解决问题的。

3: 或者可以找出Tween这个类,把这句_mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true);
的最后一个参数弱引用改为false,垃圾回收器就不会回收了。(不过这样如果需要回收的话,就得手动了,不知道之后会有什么衍生的影响没有)。

4: 大家推荐的不用FLASH自带的TWEEN类,网上缓动的类目前还有Tweener和TweenLite。其中TweenLite推荐的人最多,说效率高,而且一次改变若干属性,方便。下载及教程地址 http://blog.greensock.com/tweenliteas2/






GreenSock 網站」提供的 Tween 系列一共有三個版本:

1.「TweenMax」完整版 http://blog.greensock.com/tweenmaxas3/

2.「TweenLite」輕裝版 http://blog.greensock.com/tweenliteas3/

3.「TweenFilterLite」濾鏡版 http://blog.greensock.com/tweenfilterliteas3

又有新发现,最近做项目在用Tweener,在找一些相关资料的时候发现了一个swf,比较了Tweener,TweenLite,TweenMax以及内置的Tween,真是不比不知道,一比吓一跳,从执行效率上来说 TweenLite 》TweenMax 》Tweener 》Tween  而且前2个比后2个在大型运算中快不止一点点。

之前Tweener支持类似引导点的动效,还有使用价值,现在TweenMax也带了这样的功能,效率更高,当然就选用后者啦。
http://flex.ui.blog.163.com/blog/static/5107353620092233121221/

Tweenmax是TweenLite和TweenFilterLite的基础上建立的。目的在于使得tweening家族具备更加大众化的功能......Tweenmax同样使用简单易学的语法。实际上,因为Tweenmax是演化版,所以TweenMax可以实现TweenLite和 TweenFilterLite的所有功能,或者更多。那么,你可能要问,为什么不仅仅弄一个类呢?这是个很好的问题。这是因为我们的目的在于用最小的代码实现最好的效果。坦白说,90%的项目可能需要TweenLite,一个3K的类。这使得整个项目非常高效率地简单的实现需要的效果。但是如果你需要 tween filters或者更多的效果......就要用到6K大小的TweenFilterLite。还要更多功能?没问题,使用9K大小的(看起来十分臃肿的?)TweenMax实现更多功能。下面的列表展示了这三个类之间的不同之处。TweenMax引入了一项创新的功能,叫做 "bezierThrough",一个能够让你通过运动曲线定义相关的点(而不是用普通的方法......)又或者用有规律的贝赛尔曲线-只要你愿意。它甚至会处理你的物体的旋转,来调整你的方向。看看下面的例子吧。点击添加贝赛尔点。


版本: 8.02

日期: 8/24/2008

ACTIONSCRIPT 语言版本: 3.0 (AS2 版也有提供)

更新 更多文档请访问: http://www.TweenLite.com (这里的链接指向 AS3 )

描述:
        缓动。 我们都在做。我们很多人都知道除了 Adobe's Tween 类之外,还有很多更好的动画引擎,(比如 Tweener). 每种引擎都有它们各自的优缺点。
        最近几年,为了得到一个更紧凑的,跑得更快,效率更高的引擎,我创建了 TweenLite (我无法接受其它的一些引擎带来的文件尺寸上的负担).它很快就融入到我的所有工作中。我告诉其它人,让大家能够从中获益,最终,我将它发布了出来。在过 去的几年中,TweenLite越来越受欢迎,超乎了我的想像.
        基于此,我又添加了一些新的功能,并且尽量保持这个文件的尺寸,让它小于3K。 TweenFilterLite 扩充了 TweenLite 并且加入了滤镜缓动,包含了 ColorMatrixFilter 的一些效果,比如饱和、对比、增亮、色调,甚至是着色,但文件的尺寸始终没有超过3K。与 TweenLite 的做法相似,提供有AS2版和AS3版的类包下载。
TweenMax 比 TweenFilterLite 增加了更多的特性,包含 bezier 缓动,暂停/恢复,顺序执行等等。(见 http://www.tweenmax.com/)
        我猜你会想“如果这个是‘轻量级的’,那么它一定会丢掉很多特性,让我用的时候会有点担心”。这种想法是对的,在这里缺少一些其它缓动引擎所包含的特效,但是我可以肯定的说,在过去几年我的工程(很多获奖的 flash 程序以及500强企业的项目中)中,我几乎一直都在用它,而它从没有让我失望过。
        我还真没发现过我还需要其它的功能。你可以对任何的属性(包括 DisplayObject 对象的音量和颜色)使用缓动函数,内置的延迟时间,回调函数,以及传递参数给这些
回调函数,甚至根据数组进行缓动,统统只在一行代码中完成。如果你需要更多的特效,你可以装上TweenFilterLite 或者 TweenMax来用用。
       
TweenLite参数说明:
        1) $ target : Object - 作为目标的对象, MovieClip或者其它对象
        2) $ duration : Number - 动画的时间长度(单位:秒)
        3) $ vars : Object – 对象,通过属性值,来存贮各种属性参数用于缓动。(如果你使用 TweenLite.from() 方法,这里的参数表示缓动的初始值)
        该对象所具有的属性:
                 alpha: alpha  目标对象应该完成 (或开始,当使用 TweenLite.from()时)的透明度级别.如果 target.alpha 是1,当缓动被执行的时候,你指定参数为 0.5,它将把透明度从 1 缓动到 0.5.
                 x: 改变 MovieClip的 x 位置,把这个值设置成你希望的 MovieClip 的结束位置(如果你使用的是 TweenLite.from()这个值表示开始位置).
( y scaleX scaleY rotation 等属性不再重复说明)
                特别的属性 (**可选的**):
                 delay : Number - 延迟缓动 (以秒为单位).
                    ease : Function - 缓动函数. 例如,fl.motion.easing.Elastic.easeOut 函数。默认的是 Regular.easeOut函数。
                 easeParams : Array - 用来存贮缓动公式所需要的额外数据. 当使用 Elastic 公式并且希望控制一些额外的参数,比如放大系数和缓动时间。大多数的缓动公式是不需要参数的,因此,你不需要给其它的缓动公式传递参数。
                 autoAlpha : Number - 用它来代替 alpha 属性,可以获得一些副加的效果,比如当 alpha 值缓动到 0时,自动将 visible 属性改为 false。当缓动开始前,autoAlpha 大于 0时,它将会把 visible 属性变成 true 。
                visible : Boolean - 在缓动结束时,想要指定 DisplayObject 的 visible 属性,请使用这个参数。
                 volume : Number - 对 soundTransform (MovieClip/SoundChannel/NetStream 等)对象中的volume属性(音量大小)进行缓动
                tint : Number - 改变 DisplayObject 的颜色,设置一个16进制颜色值之后,当缓动结束时,目标对象将被变成这个颜色,(如果使用的是TweenLite.from(),这个值将表示目标对象 开始缓动时的颜色)。举个例子,颜色值可以设定为: 0xFF0000。
                removeTint : Boolean - 要移除 DisplayObject 颜色,将这个参数设成 true 。
                frame : Number - 将 MovieClip 缓动到指帧频。
                onStart : Function - 在缓动开始时想要执行某个函数,就将函数的引用(通常是函数名)放到这里。如果缓动是带延迟的,那么在缓动开始前该函数不会被执行。
                onStartParams : Array - 为缓动开始时要执行的函数传递参数。(可选的)
                onUpdate : Function - 缓动过程中,每次更新时调用这里指定的函数(缓动开始后,每一帧被触发一次),
                onUpdateParams : Array - 给 onUpdate 参数指定的函数传递参数 (可选的)
                onComplete : Function - 缓动结束时执行的函数。
                onCompleteParams : Array - 给 onComplete 参数指定的函数传递参数 (可选的)
                persist : Boolean - 值为 true 时,TweenLite 实例将不会自动被系统的垃圾收集器给收走。但是当新的缓动出现时,它还是会被重写(overwritten)默认值为 false.
                renderOnStart : Boolean - 如果你使用带有延迟缓动的 TweenFilterLite.from() ,并且阻止缓动的渲染(rendering )效果,直到缓动真正开始,将这个值设为 true.默认情况下该值为 false ,这会让渲染效果立即被执行,甚至是在延迟的时间还没到之前。
                overwrite : int - 当前的缓动被创建以后,通过这个参数可以限制作用于同一个对象的其它缓动,可选的参数值有:
                        - 0 (没有): 没有缓动被重写。这种模式下,运行速度是最快的,但是需要注意避免创建一些控制相同属性的缓动,否则这些缓动效果间将出现冲突
                        - 1 (全部): (这是默认值,除非 OverwriteManager.init() 被调用过)对于同一对象的所有缓动在创建时将会被完全的覆盖掉。
                                TweenLite.to(mc, 1, {x:100, y:200});
                                TweenLite.to(mc, 1, {x:300, delay:2}); //后创建的缓动将会覆盖掉先前创建的缓动,(可以起到这样的作用:缓动进行到一半时被中断,执行新的缓动 译者注)
                        - 2 (自动): (当 OverwriteManager.init() 被执行后,会根据具体的属性值进行选择)只覆盖对同一属性的缓动。
                                TweenLite.to(mc, 1, {x:100, y:200});
                                TweenLite.to(mc, 1, {x:300}); //only  "x" 属性的缓动将被覆盖
                        - 3 (同时发生): 缓动开始时,覆盖全部的缓动。
                                  TweenLite.to(mc, 1, {x:100, y:200});
                                  TweenLite.to(mc, 1, {x:300, delay:2}); //不会覆盖先前的缓动,因为每二个缓动开始时,第一个缓动已经结束了。

举例:
        将实例名为 "clip_mc" 的 MovieClip 透明度降到 50% (0.5) ,并将它 x 轴位置移动到 120 ,将音量将到 0,缓动总共用时 1.5 秒,代码如下:
                import gs.TweenLite;
                TweenLite.to(clip_mc, 1.5, {alpha:0.5, x:120, volume:0});

        如果希望使用更高级的缓动函数在 5 内,将 alpha 变到 0.5,将 x 移动 到 120 ,使用 "easeOutBack" 弹性函数,缓动整体延迟 2 秒发生,并且在缓动结束时,执行 "onFinishTween" 函数,并且为这个函数传递几个参数,(一个数值 5 以及对 clip_mc 的引用),代码如下:
                import gs.TweenLite;
                import fl.motion.easing.Back;
                TweenLite.to(clip_mc, 5, {alpha:0.5, x:120, ease:Back.easeOut, delay:2, onComplete: onFinishTween, onCompleteParams:[5, clip_mc]});
                function onFinishTween(argument1:Number, argument2:MovieClip):void {
                        trace("The tween has finished! argument1 = " + argument1 + ", and argument2 = " + argument2);
                }

        如果你的舞台上的 MovieClip 已经停在了它的结束位置,你只想让它花上5秒种回到这个位置,(只需要改变 y 属性,比当前位置高 100 像素的位置,让它从那里下落), 代码如下(这次使用的是 TweenLite.from 译者注):
                import gs.TweenLite;
                import fl.motion.easing.Elastic;
                TweenLite.from(clip_mc, 5, {y:"-100", ease:Elastic.easeOut});

      

 

说明:
        - TweenLite类会让你的 Flash 文件增加 3kb大小。
        - 给参数值加上引号,表示对指定的属性进行相应操作。比如,使用 TweenLite.to(mc, 2, {x:"-20"}); 它将 mc.x 向左移动 20 像素,与此相同效果的代码是:TweenLite.to(mc, 2, {x:mc.x - 20});
        - 你可以用别的缓动函数替换 TweenLite 默认的缓动函数: Regular.easeOut.
        - 必须使用 Flash Player 9 或之后版本的播放器 (ActionScript 3.0)
        - 可以对任何 MovieClip 使用 "volume" 缓动,就比如:TweenLite.to(myClip_mc, 1.5, {volume:0});
        - 可以将 MovieClip 设定成某种颜色,使用 "tint" 参数,比如: TweenLite.to(myClip_mc, 1.5, {tint:0xFF0000});
        - 想要对数组内容进行缓动,将数值放到一个叫 endArray 的数组中即可,例如:
          var myArray:Array = [1,2,3,4];
          TweenLite.to(myArray, 1.5, {endArray:[10,20,30,40]});
        - 可以在任何时候终止缓动,使用 TweenLite.killTweensOf(myClip_mc); 函数。如果想强制终止缓动,可以传递一个 true 做为第二个参数,比如
TweenLite.killTweensOf(myClip_mc, true);
        - 取掉延迟回调函数,用 TweenLite.killDelayedCallsTo(myFunction_func);这项功能可以用来控制回调函数的优先级。
        - 使用 TweenLite.from() 方法,可以使用对象从别的位置回到当前的位置。例如,你可以将对象在舞台上摆放整齐(缓动结束时的位置),然后利用
缓动,让它们跑到那个位置上去,你可以将缓动的初始位置值 x 或 y 或 alpha (或者其它你需要的属性)当做参数传递给这个方法函数。

TweenLite 下载链接:
http://www.greensock.com/ActionScript/TweenLiteAS3/TweenLiteAS3.zip
下载下来的类包中,有一个 TweenLiteAS3_Sample_1.swf ,初学者可以用它来观察各种缓动的效果,并且直接得到相关的执行代码。算是一个可视化设计的工具,不要错过。
下载到类包以后,解压缩到一个目录比如:d:\AS3Class ,在flash9 的首选参数->ActionScript->ActionScript3.0设置中添加类目录,d:\AS3Class\TweenLiteAS3 即可正确引用到相关的类。


应用举例:
import gs.TweenLite;
import gs.easing.*;

stage.addEventListener(MouseEvent.CLICK, onCK);
function onCK(evt) {
        TweenLite.to(mc, 0.5, {x:mouseX, y:mouseY, rotation:360});
}
在舞台上点击,会让mc 元件旋转并跑动到鼠标位置

----------------------------------------------------------

 

tweenlite 中文说明及使用教程

http://www.luoye.org/html/read_14.html
/*
版本: 8.02
日期: 8/24/2008
ACTIONSCRIPT 语言版本: 3.0 (AS2 版也有提供)
更新 及 更多文档请访问: http://www.TweenLite.com (这里的链接指向 AS3 版)
描述:
        缓动。 我们都在做。我们很多人都知道除了 Adobe's Tween 类之外,还有很多更好的动画引擎,(比如 Tweener). 每种引擎都有它们各自的优缺点。
        最近几年,为了得到一个更紧凑的,跑得更快,效率更高的引擎,我创建了 TweenLite (我无法接受其它的一些引擎带来的文件尺寸上的负担).它很快就融入到我的所有工作中。我告诉其它人,让大家能够从中获益,最终,我将它发布了出来。在过 去的几年中,TweenLite越来越受欢迎,超乎了我的想像.
        基于此,我又添加了一些新的功能,并且尽量保持这个文件的尺寸,让它小于3K。 TweenFilterLite 扩充了 TweenLite 并且加入了滤镜缓动,包含了 ColorMatrixFilter 的一些效果,比如饱和、对比、增亮、色调,甚至是着色,但文件的尺寸始终没有超过3K。与 TweenLite 的做法相似,提供有AS2版和AS3版的类包下载。
TweenMax 比 TweenFilterLite 增加了更多的特性,包含 bezier 缓动,暂停/恢复,顺序执行等等。(见 www.TweenMax.com)
        我猜你会想“如果这个是‘轻量级的’,那么它一定会丢掉很多特性,让我用的时候会有点担心”。这种想法是对的,在这里缺少一些其它缓动引擎所包含的特效,但是我可以肯定的说,在过去几年我的工程(很多获奖的 flash 程序以及500强企业的项目中)中,我几乎一直都在用它,而它从没有让我失望过。
        我还真没发现过我还需要其它的功能。你可以对任何的属性(包括 DisplayObject 对象的音量和颜色)使用缓动函数,内置的延迟时间,回调函数,以及传递参数给这些回调函数,甚至根据数组进行缓动,统统只在一行代码中完成。如果你需要更多的特效,你可以装上TweenFilterLite 或者 TweenMax来用用。
      
TweenLite参数说明:
        1) $ target : Object - 作为目标的对象, MovieClip或者其它对象
        2) $ duration : Number - 动画的时间长度(单位:秒)
        3) $ vars : Object – 对象,通过属性值,来存贮各种属性参数用于缓动。(如果你使用 TweenLite.from() 方法,这里的参数表示缓动的初始值)
        该对象所具有的属性:
                 alpha: alpha  目标对象应该完成 (或开始,当使用 TweenLite.from()时)的透明度级别.如果 target.alpha 是1,当缓动被执行的时候,你指定参数为 0.5,它将把透明度从 1 缓动到 0.5.
                 x: 改变 MovieClip的 x 位置,把这个值设置成你希望的 MovieClip 的结束位置(如果你使用的是 TweenLite.from()这个值表示开始位置).
( y scaleX scaleY rotation 等属性不再重复说明)
                特别的属性 (**可选的**):
                 delay : Number - 延迟缓动 (以秒为单位).
                    ease : Function - 缓动函数. 例如,fl.motion.easing.Elastic.easeOut 函数。默认的是 Regular.easeOut函数。
                 easeParams : Array - 用来存贮缓动公式所需要的额外数据. 当使用 Elastic 公式并且希望控制一些额外的参数,比如放大系数和缓动时间。大多数的缓动公式是不需要参数的,因此,你不需要给其它的缓动公式传递参数。
                 autoAlpha : Number - 用它来代替 alpha 属性,可以获得一些副加的效果,比如当 alpha 值缓动到 0时,自动将 visible 属性改为 false。当缓动开始前,autoAlpha 大于 0时,它将会把 visible 属性变成 true 。
                visible : Boolean - 在缓动结束时,想要指定 DisplayObject 的 visible 属性,请使用这个参数。
                 volume : Number - 对 soundTransform (MovieClip/SoundChannel/NetStream 等)对象中的volume属性(音量大小)进行缓动
                tint : Number - 改变 DisplayObject 的颜色,设置一个16进制颜色值之后,当缓动结束时,目标对象将被变成这个颜色,(如果使用的是TweenLite.from(),这个值将表示目标对象 开始缓动时的颜色)。举个例子,颜色值可以设定为: 0xFF0000。
                removeTint : Boolean - 要移除 DisplayObject 颜色,将这个参数设成 true 。
                frame : Number - 将 MovieClip 缓动到指帧频。
                onStart : Function - 在缓动开始时想要执行某个函数,就将函数的引用(通常是函数名)放到这里。如果缓动是带延迟的,那么在缓动开始前该函数不会被执行。
                onStartParams : Array - 为缓动开始时要执行的函数传递参数。(可选的)
                onUpdate : Function - 缓动过程中,每次更新时调用这里指定的函数(缓动开始后,每一帧被触发一次),
                onUpdateParams : Array - 给 onUpdate 参数指定的函数传递参数 (可选的)
                onComplete : Function - 缓动结束时执行的函数。
                onCompleteParams : Array - 给 onComplete 参数指定的函数传递参数 (可选的)
                persist : Boolean - 值为 true 时,TweenLite 实例将不会自动被系统的垃圾收集器给收走。但是当新的缓动出现时,它还是会被重写(overwritten)默认值为 false.
                renderOnStart : Boolean - 如果你使用带有延迟缓动的 TweenFilterLite.from() ,并且阻止缓动的渲染(rendering )效果,直到缓动真正开始,将这个值设为 true.默认情况下该值为 false ,这会让渲染效果立即被执行,甚至是在延迟的时间还没到之前。
                overwrite : int - 当前的缓动被创建以后,通过这个参数可以限制作用于同一个对象的其它缓动,可选的参数值有:
                        - 0 (没有): 没有缓动被重写。这种模式下,运行速度是最快的,但是需要注意避免创建一些控制相同属性的缓动,否则这些缓动效果间将出现冲突。
                        - 1 (全部): (这是默认值,除非 OverwriteManager.init() 被调用过)对于同一对象的所有缓动在创建时将会被完全的覆盖掉。
                                TweenLite.to(mc, 1, {x:100, y:200});
                                TweenLite.to(mc, 1, {x:300, delay:2}); //后创建的缓动将会覆盖掉先前创建的缓动,(可以起到这样的作用:缓动进行到一半时被中断,执行新的缓动 译者注)
                        - 2 (自动): (当 OverwriteManager.init() 被执行后,会根据具体的属性值进行选择)只覆盖对同一属性的缓动。
                                TweenLite.to(mc, 1, {x:100, y:200});
                                TweenLite.to(mc, 1, {x:300}); //only  "x" 属性的缓动将被覆盖
                        - 3 (同时发生): 缓动开始时,覆盖全部的缓动。
                                  TweenLite.to(mc, 1, {x:100, y:200});
                                  TweenLite.to(mc, 1, {x:300, delay:2}); //不会覆盖先前的缓动,因为每二个缓动开始时,第一个缓动已经结束了。

举例:
        将实例名为 "clip_mc" 的 MovieClip 透明度降到 50% (0.5) ,并将它 x 轴位置移动到 120 ,将音量将到 0,缓动总共用时 1.5 秒,代码如下:
                import gs.TweenLite;
                TweenLite.to(clip_mc, 1.5, {alpha:0.5, x:120, volume:0});

        如果希望使用更高级的缓动函数在 5 内,将 alpha 变到 0.5,将 x 移动 到 120 ,使用 "easeOutBack" 弹性函数,缓动整体延迟 2 秒发生,并且在缓动结束时,执行 "onFinishTween" 函数,并且为这个函数传递几个参数,(一个数值 5 以及对 clip_mc 的引用),代码如下:
                import gs.TweenLite;
                import fl.motion.easing.Back;
                TweenLite.to(clip_mc, 5, {alpha:0.5, x:120, ease:Back.easeOut, delay:2, onComplete: onFinishTween, onCompleteParams:[5, clip_mc]});
                function onFinishTween(argument1:Number, argument2:MovieClip):void {
                        trace("The tween has finished! argument1 = " + argument1 + ", and argument2 = " + argument2);
                }

        如果你的舞台上的 MovieClip 已经停在了它的结束位置,你只想让它花上5秒种回到这个位置,(只需要改变 y 属性,比当前位置高 100 像素的位置,让它从那里下落), 代码如下(这次使用的是 TweenLite.from 译者注):
                import gs.TweenLite;
                import fl.motion.easing.Elastic;
                TweenLite.from(clip_mc, 5, {y:"-100", ease:Elastic.easeOut});
     

说明:
        - TweenLite类会让你的 Flash 文件增加 3kb大小。
        - 给参数值加上引号,表示对指定的属性进行相应操作。比如,使用 TweenLite.to(mc, 2, {x:"-20"}); 它将 mc.x 向左移动 20 像素,与此相同效果的代码是:TweenLite.to(mc, 2, {x:mc.x - 20});
        - 你可以用别的缓动函数替换 TweenLite 默认的缓动函数: Regular.easeOut.
        - 必须使用 Flash Player 9 或之后版本的播放器 (ActionScript 3.0)
        - 可以对任何 MovieClip 使用 "volume" 缓动,就比如:TweenLite.to(myClip_mc, 1.5, {volume:0});
        - 可以将 MovieClip 设定成某种颜色,使用 "tint" 参数,比如: TweenLite.to(myClip_mc, 1.5, {tint:0xFF0000});
        - 想要对数组内容进行缓动,将数值放到一个叫 endArray 的数组中即可,例如:
          var myArray:Array = [1,2,3,4];
          TweenLite.to(myArray, 1.5, {endArray:[10,20,30,40]});
        - 可以在任何时候终止缓动,使用 TweenLite.killTweensOf(myClip_mc); 函数。如果想强制终止缓动,可以传递一个 true 做为第二个参数,比如
TweenLite.killTweensOf(myClip_mc, true);
        - 取掉延迟回调函数,用 TweenLite.killDelayedCallsTo(myFunction_func);这项功能可以用来控制回调函数的优先级。
        - 使用 TweenLite.from() 方法,可以使用对象从别的位置回到当前的位置。例如,你可以将对象在舞台上摆放整齐(缓动结束时的位置),然后利用
缓动,让它们跑到那个位置上去,你可以将缓动的初始位置值 x 或 y 或 alpha (或者其它你需要的属性)当做参数传递给这个方法函数。

TweenLite 下载链接:
http://www.greensock.com/ActionS ... S3/TweenLiteAS3.zip
下载下来的类包中,有一个 TweenLiteAS3_Sample_1.swf ,初学者可以用它来观察各种缓动的效果,并且直接得到相关的执行代码。算是一个可视化设计的工具,不要错过。
下载到类包以后,解压缩到一个目录比如:d:AS3Class ,在flash9 的首选参数->ActionScript->ActionScript3.0设置中添加类目录,d:AS3ClassTweenLiteAS3 即可正确引用到相关的类。


应用举例:
import gs.TweenLite;
import gs.easing.*;

stage.addEventListener(MouseEvent.CLICK, onCK);
function onCK(evt) {
        TweenLite.to(mc, 0.5, {x:mouseX, y:mouseY, rotation:360});
}
在舞台上点击,会让mc 元件旋转并跑动到鼠标位置。

------------------------------------------------------------

 

TweenFilterLite 参数说明 中文翻译

      Flash学习笔记 2008-9-22 16:52

TweenFilterLite 继承自 TweenLite ,进行了功能上的扩充,提供了颜色、图象处理方面的一些简便的方法,如果对 Flash 中的矩阵有一些基本的了解之后,再来用它,会比较的得心应手,它有点像是将 Flash 的颜色矩阵和卷积矩阵揉合到一起,提供了更为简单的应用方法,因此, 一并翻译出来供大家参考。

/*
版本: 7.14
日期: 6/10/2008
ACTIONSCRIPT 版本: 3.0 (网站提供有 AS2 版的类))
更新及更多详细文档,请访问: http://www.TweenFilterLite.com (链接到 AS3 版)
中文翻译:独自行走【闪航AS】 (英文名 Richard ) 博客 http://dzxz.blog.5d.cn
描述:
 TweenFilterLite 继承自超轻量级的(大约3k)、强大的 TweenLite 核心类,新添加了滤镜缓动(模糊、发光、阴影、斜角滤镜、等等)和图像效果(调整对比度、色调、亮度、饱和度、灰度以及阀值),加起来大约6k
 TweenFilterLite 类的语法结构与 TweenLite 相同。如果你还不熟悉 TweenLite ,推荐你先把它找出来看一下。(我也推荐你看一下先前翻译的 TweenLite 使用详解,即 TweenLite 类的描述文件----译者注)
 它提供了一种简便的方法,可以在同一时间对某个对象的多个属性进行缓动,包括 MovieClip 的位置、透明度、音量、颜色等。
 就像 TweenLite 一样,TweenFilterLite 允许你指定延迟缓动(让缓动在指定的时间之后开始进行----译者注),以及在缓动开始或结束时调用任何函数(同时还可以传递任意多个参数给这些函数),自动清除掉其它的对同一目标进行的缓动(从而避免冲突)、缓动数组,等等。使用这个类的一个很大的好处就是它非常努力地缩小了文件的尺寸(正如它名字中“Lite”所代表的含意)。外面还有一些其它的缓动引擎,但是根据我的经验,它们至少比这个文件要大上3倍以上,这在需要精确控制文件尺寸的情况下是不可接受的(比如制做 banner 广告)。同样,我还尚未发现过比这更快的引擎。这里采用的语法是非常简单的,并且这个类不依赖于复杂的原型扩展手段,那样做通常会在一些编译器中制造难题。TweenFilterLite 非常的简单、快捷、并且(依旧)非常的轻盈。
 如果你还在寻找更多的功能,去 www.TweenMax.com 看一下 TweenFilterLite 的大哥 TweenMax 。

参数:
 1) $ target : Object - 缓动的目标对象,对它的属性进行缓动
 2) $ duration : Number - 动画的时长(单位:秒)
 3) $ vars : Object - 对象类型的参数,该对象包含了所有的需要缓动的属性,属性中保存的是缓动结束时的目标值(如果使用 TweenFilterLite.from() 方法,属性中保存的是缓动开始时的初始值)。 所有的滤镜都是通过对象的属性来传递的(属性的名称必须准确,比如:blurFilter, glowFilter, colorMatrixFilter, 等等),滤镜对象可以包含任意多个与滤镜相关的属性,比如 blurX, blurY, contrast, color, distance, colorize, brightness, highlightAlpha, 等等。
    专有属性:
     delay : Number - 延迟开始缓动 (以秒为单位).
     ease : Function - 缓动函数. 例如,fl.motion.easing.Elastic.easeOut 函数。默认的是 Regular.easeOut函数。
     easeParams : Array - 用来存贮缓动公式所需要的额外数据。当使用 Elastic 公式并且希望控制一些额外的参数,比如放大系数和缓动时间。大多数的缓动公式是不需要参数的,因此,你不需要给其它的缓动公式传递参数。  
     autoAlpha : Number - 用它来代替 alpha 属性,可以获得一些副加的效果,比如当 alpha 值缓动到 0时,将 visible 属性改为 false。当缓动开始前,autoAlpha 大于 0时,它将会把 visible 属性变成 true 。
     volume : Number - 对 MovieClip 或 SoundChannel 对象中的 volume 属性(音量大小)进行缓动。该属性表示的是缓动结束时的音量值(如果使用的是 TweenLite.from(),这个属性将表示目标对象开始缓动时的音量)
     tint : Number - 改变 DisplayObject 的色调或颜色,设置一个16进制颜色值,做为缓动结束时,目标对象的颜色值,(如果使用的是 TweenLite.from(),这个值将表示目标对象开始缓动时的颜色)。例如,颜色值可以设定为: 0xFF0000。如果要移除颜色,只需要传递一个 null 值给 tint 属性。( TweenLite 中使用的是 removeTint 属性----译者注) 
     frame : Number - 将 MovieClip 缓动到指帧频。
     onStart : Function - 在缓动开始时想要执行某个函数,就将函数的引用(通常是函数名)放到这里。当缓动是带延迟的,这一点会非常有用。
     onStartParams : Array - 为缓动开始时要执行的函数传递参数。(可选的)
     onUpdate : Function - 缓动过程中,每次更新属性值时,会执行这里指定的函数(缓动开始后,每一帧被触发一次)。
     onUpdateParams : Array - 给 onUpdate 参数指定的函数传递参数 (可选的)
     onComplete : Function - 缓动结束时执行的函数。
     onCompleteParams : Array - 给 onComplete 参数所指定的函数传递参数 (可选的)
     renderOnStart : Boolean - 当使用带有延迟缓动的 TweenFilterLite.from() ,并且希望阻止缓动的渲染(rendering )效果,直到缓动真正开始,将这个值设为 true.默认情况下该值为 false ,这会让渲染效果立即被执行,甚至是在延迟尚未结束之前。
     overwrite : Boolean - 如果 不 希望当前的缓动效果自动覆盖到其它的影响同一属性的缓动,请确保这个值设为 false。
     blurFilter : Object - 应用模糊滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:blurX(横向的模糊度), blurY(纵向的模糊度), quality(品质,默认值为2)
     glowFilter : Object - 应用发光滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:alpha(通明度),blurX , blurY , color(颜色),strength(强度), quality ,inner(内侧发光),knockout(挖空)
     colorMatrixFilter : Object -应用颜色矩阵滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:colorize(色调),amount(总量),contrast(对比度),brightness(亮度),saturation(饱和度),hue(色相),threshold(阀值),relative(相关性),matrix(颜色矩阵)
     dropShadowFilter : Object - 应用阴影滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:alpha, angle(角度), blurX, blurY, color, distance(距离), strength, quality
     bevelFilter : Object - 应用斜角滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:angle, blurX, blurY, distance, highlightAlpha(高亮区的透明度), highlightColor(高亮区的颜色),shadowAlpha(阴影区的透明度), shadowColor(阴影区的颜色), strength(强度), quality
 

举例:
 一个简单示例,将 clip_mc 的模糊度从当前值,经过1.5秒后,模糊到20,代码如下:  
 
  import gs.TweenFilterLite;
  TweenFilterLite.to(clip_mc, 1.5, {blurFilter:{blurX:20, blurY:20}});
 
 下面的代码演示的是连续缓动的例子,首先用 2 秒钟的时间改变 MovieClip 的颜色,然后用 1 秒种进行模糊处理(第二个缓动延迟了两秒后进行----译者注):

  import gs.TweenFilterLite;
  TweenFilterLite.to(clip_mc, 2, {colorMatrixFilter:{colorize:0xFF0000, amount:1}});
  TweenFilterLite.to(clip_mc, 1, {blurFilter:{blurX:20, blurY:20}, delay:2, overwrite:false});
  
 更高级的应用,如果希望在 5 秒种的时间里将影片剪辑 clip_mc 的饱和度降到 0 ,推迟 2 秒启动缓动,缓动结束时调用“onFinishTween”函数,并且为这个函数传递一些参数(数值 5 和 clip_mc 的引用),代码如下:
  
  import gs.TweenFilterLite;
  import fl.motion.easing.Back;
  TweenFilterLite.to(clip_mc, 5, {colorMatrixFilter:{saturation:0}, delay:2, onComplete:onFinishTween, onCompleteParams:[5, clip_mc]});
  function onFinishTween(argument1:Number, argument2:MovieClip):void {
   trace("The tween has finished! argument1 = " + argument1 + ", and argument2 = " + argument2);
  }
 
 如果舞台上的影片剪辑已经具备了期望的缓动结束时的属性值,你希望从某个色调的版本(比如 红色:0xFF0000)缓动到当前的属性状态,可以使用下面的代码:
  
  import gs.TweenFilterLite;
  TweenFilterLite.from(clip_mc, 5, {type:"color", colorize:0xFF0000});  
 

备注:
 - 这个类 (包含它的父类 TweenLite ) 将会让你的 Flash 文件总共增加 6kb 。
 - 需要 Flash 9 播放器或之后的版本( 支持 ActionScript 3.0 的播放器 )。
 - 对所有滤镜来说,Quality (品质)参数的默认值为 "2" ,但是你可以通过传递参数来改变这一设置。
 -  Flash 中已经有自带的图像滤镜功能 (ColorMatrixFilter),该功能需要使用到矩阵,TweenFilterLite 提供了静态方法,可以直接进行调用,用于控制 ColorMatrixFilter 中使用的矩阵(因此,直接使用即可,不必缓动任何东西)。例如,可以通过下面的代码改变矩阵的颜色:
   var myNewMatrix:Array = TweenFilterLite.colorize(myOldMatrix, 0xFF0000, 1);
 - 特别鸣谢 Mario Klingemann (http://www.quasimondo.com),感谢他在 ColorMatrix 类中所做的工作,这个类对于图像效果真的非常有用。

 

----------------------------------------------------------------------------

 

TweenMax 参数说明 中文翻译

TweenMax 建立在 TweenLite 和TweenFilterLite 基础之上,因此,又揉合了这二者的功能,使得功能更加的齐备,但是如果说易用性,觉得还是 TweenLite 来得方便一些。我的译文是从 TweenLite 开始的,接着是  TweenFilterLite 最后是  TweenMax ,这也恰好是这个类发展的轨迹,沿着这个轨迹一路读过来,会觉得容易理解很多。

/*
版本: 1.17
日期: 6/10/2008
ACTIONSCRIPT 版本: 3.0 (网站提供有 AS2 版本的类)
更新及更多详细文档,请访问: http://www.tweenfilterlite.com/ (链接到 AS3 版)
中文翻译:独自行走【闪航AS】 (英文名 Richard ) 博客 http://dzxz.blog.5d.cn/
描述:
TweenMax 建立在 TweenLite 核心类以及它的大哥 TweenFilterLite 基础之上,它为 Tween 家族增加了新的受欢迎的功能(尽管只是锦上添花),从而使家族更加的壮大,比如贝赛尔缓动、暂停/继续能力,简便的连续缓、16进制颜色缓动、以及更多的内容。
TweenMax 采用了与它的兄弟相似的易于学习的语法结构。实事上,因为它扩展自它们,TweenMax 可以做任何 TweenLite 和/或者  TweenFilterLite 能做的事,还加上了更多的特色。那么为什么要建立 3 个类,而不是 1 个呢?问的好,我的目标是:效率最大化,尺寸最小化。坦白的说,TweenLite 可能是所有的程序员在 90% 的项目中都需要用到的,而它仅有 3k。相对它的功能来说,它是非常高效和紧凑的。
但是如果你需要对滤镜进行缓动,或者更丰富的图像效果,比如说饱和度(saturation)、对比度(contrast)、色相(hue)、调色等等进行控制,
那就装上 TweenFilterLite 总共 6k 。还想要的更多? No problem (没问题)-- TweenMax 已经在总共 8k 的大小里面塞满了足够多的功能。
想查看相关的功能对比图,请访问 www.TweenMax.com 以获取更多信息。
( TweenMax 类包中直接包含有独立的 TweenLite 和 TweenFilterLite 类,因此下载这一个包就可以了,在 Flash 类路径中添加的时候,也只需要添加这一个路径就可以了----译者注)
TweenMax 创造了一种全新的功能,叫做 "bezierThrough"(暂译为 贝塞尔通路),这个功能允许你定义一些点,通过贝塞尔曲线连接这些点,
(通常的控制点只是用来拉近曲线,这里的点直接在曲线的路径上)。当然,如果你愿意,你可以用更正规的贝塞尔曲线。目前,TweenMax 增加了下列功能(相对于 TweenFilterLite 而言):
  - 进行贝塞尔缓动(包括指定通路 THROUGH 点 和 运动对象的自动方位导航(在贝塞尔曲线中移动时,对象的旋转角度是自动控制的,译者注))
  - 连续的缓动 或称为 序列化的缓动
  - 对 对象数组(数组中存放了不同的对象,译者注) 中的对象进行统一的缓动,使用 allTo() 和 allFrom()
  - 缓动中的 暂停/继续 功能,使用 pause() 和 resume() 方法,或者 "paused" 属性 (比如 myTween.paused = true)
  - isTweening 静态方法,用来判断一个对象是否正在进行缓动(比如 TweenMax.isTweening(my_mc))
  - 跳转至缓动的任何时段,使用 "progress" 属性。输入一个 0 到 1 之间的数值。 progress 值为零,将会把缓动的进程跳转到初始阶段,值为 1 时,跳转至 100% 完成状态,值为 0.5 时,将转至缓动过程的半山腰位置。
    例如: myTween.progress = 0.5;
  - 对 16 进制的颜色进行缓动,使用 hexColors 属性
  - 获取缓动效果的实例数组,该数组中包括了加在一个指定的目标对象上的所有的缓动效果的实例,该数组可以容纳 TweenMax 和 TweenLite 和 TweenFilterLite 三种类型的缓动实例。
    例如: TweenMax.getTweensOf(my_mc); // (如果 my_mc 上使用了不止一个的缓动效果,那么这里将返回一个数组,数组中是不同的缓动效果的实例,可以用来对每个缓动进行实时的控制,译者注)
  - 获取 TweenMax (和 TweenLite 和 TweenFilterLite) 的实例数组,使用用静态函数 getAllTweens()
  - 中止(杀死)所有的缓动(以及可选的完成部分缓动)
  - 暂停/继续 全部的缓动

参数:
1) $ target : Object - 目标 MovieClip (或其它对象),对它的属性进行缓动
2) $ duration : Number - 动画的时间长度(单位:秒)
3) $ vars : Object - 一个包含了多种属性的对象,用来存贮缓动结束时的各种属性值(如果你使用 TweenLite.from() 方法,这里的参数表示缓动的初始值)。
        例如:
        alpha: 目标对象在缓动结束时的 alpha (不透明度的级别)值。(当使用 TweenMax.from()时,表示开始缓动时的 alpha 值)
       举个例子,如果 target_obj.alpha 是 1,当这个缓动代码被执行时,将 alpha 参数设成 0.5 ,它将实现从 1 到 0.5 的渐变缓动。
        x: 想要改变 MovieClip 的 x 位置,只需要将这个参数值设成你希望的缓动结束时的值即可。(如果使用 TweenMax.from(),则表示缓动开始时的 x 值)
  
    专有属性:
     delay : Number - 延迟缓动 (以秒为单位)
     ease : Function - 缓动函数. 例如,fl.motion.easing.Elastic.easeOut 函数。默认的是 Regular.easeOut函数
     easeParams : Array - 用来存贮缓动公式所需要的额外数据. 当使用 Elastic 公式并且希望控制一些额外的参数,
     比如振幅和周期。大多数的缓动公式是不需要参数的,因此,你不需要给其它的缓动公式传递参数。  
     autoAlpha : Number - 用它来代替 alpha 属性,可以获得一些副加的效果,比如当 alpha 值缓动到 0时,
     自动将 visible 属性改为 false。当缓动开始前,autoAlpha 大于 0时,它将会自动把 visible 属性变成 true 。
     volume : Number - 改变 MovieClip 或者 SoundChannel 的音量,将缓动结束时的音量值写在这里即可。(如果使用 TweenMax.from(),这里的值表示缓动开始时的音量).
     tint : Number - 改变可显示对象(DisplayObject)的色调/颜色,将缓动结束时的16进制值颜色值(比如 0xFF0000)写在这里即可。(如果使用 TweenMax.from(),这里的值表示缓动开始时的颜色值).
                      如果想要移除颜色,传一个 null 做为颜色值即可。
     frame : Number - 将 MovieClip 缓动到指定的帧频
     bezier : Array - Bezier 缓动,允许你以非线性的方式进行缓动。例如,将一个 MovieClip 从原始的 (0,0) 的位置,向右移动500像素,到(500,0),在缓动的中间向下弯曲。只需要向贝赛尔数组中传递多个对象,每一个都是一个控制点(关于控制点是如何工作的请参考 Flash 的 curveTo() 绘图方法相关说明)。在这个例子中,假设我们的控制点是 x/y 坐标
250,50。把 my_mc 放到 0,0 位置,然后执行下面的代码:          TweenMax.to(my_mc, 3, {_x:500, _y:0, bezier:[{_x:250, _y:50}]});
     bezierThrough : Array - 与上面的贝赛尔数组相似,但是它接收的不是控制点,而是贝赛尔曲线要经过的位置点。与控制点相比,这样的用法更加直观。
     orientToBezier : Array (或者 Boolean 类型) - 设计师/开发人员经常用到的一个效果,让 MovieClip/Sprite 自动调整自身的方向(改变 rotation ),使之符合贝赛尔路径的方向(就像是汽车在曲折的道路上需要不断调整方向一样----译者注)。orientToBezier 使得这一切变得简单。为了更精确的调整 rotation 属性,TweenMax 需要 4 方面的信息:
          1) 位置属性 1 (通常为 "x")
          2) 位置属性 2 (通常为 "y")
          3) 旋转属性 (通常为 "rotation")
          4) 旋转的度数(可选的 - 让它更容易的正确瞄准 MovieClip )
         当 orientToBezier 属性为数组时,该(容器)数组中的每个元素是包含了一组数据的数组(形如 [[x1,y1,rota1,ang1],[x2,y2,rota2,ang2]]----译者注)。
         为了获得最大的灵活性,你可以向容器数组中传递任意数量的数组,逐个的指定旋转属性。这在进行 3D 工作进会很方便,因为你可以旋转多个坐标轴。如果进行的是标准的 2D x/y 坐标系贝赛尔缓动,只需要传递一个布尔值 true ,然后  TweenMax 将会使用一个典型的数组设置 [["x", "y", "rotation", 0]]。
         提示:不要忘了这里存在着容器数组(注意:数组前后有两层方括号)
     hexColors : Object - 尽管 16 进制颜色是一种技术上使用的数字,但当你试途按照数字增减的老办法来缓动时,你会发现颜色的变化并不平滑。为了更恰当的进行颜色缓动,通常需要独立的对红、绿、蓝的成分进行缓动。TweenMax 把这一切变得简单。将一个 16 进制颜色值缓动到另一个 16 进制颜色值,只需要使用这个 TweenMax 中专用的 hexColors 属性即可。 这个属性必须是一个对象,该对象具有相关的颜色属性,属性名称与目标对象中使用的 16 进制颜色属性的名称相同。比如,如果 my_obj 对象具有一个“myHexColor”属性,想让它在两秒种内缓动为红色 (0xFF0000),需要这样做:
       TweenMax.to(my_obj, 2, {hexColors:{myHexColor:0xFF0000}}); (内层花括号括起来的部分,表示的就是一个包含有 myHexColor 属性的对象----译者注)
       可以传递任意数量的 hexColor 属性。
     onStart : Function - 在缓动开始时想要执行某个函数,就将函数的引用(通常是函数名)放到这里。当缓动是带延迟的,这一点会非常有用。
     onStartParams : Array - 为缓动开始时要执行的函数传递参数。(可选的)
     onUpdate : Function - 缓动过程中,每次更新属性值时,会执行这里指定的函数(缓动开始后,每一帧被触发一次)。
     onUpdateParams : Array - 给 onUpdate 参数指定的函数传递参数 (可选的)
     onComplete : Function - 缓动结束时执行的函数。
     onCompleteParams : Array - 给 onComplete 参数所指定的函数传递参数 (可选的)
     renderOnStart : Boolean - 当使用带有延迟缓动的 TweenFilterLite.from() ,并且希望阻止缓动的渲染(rendering )效果,直到缓动真正开始,将这个值设为 true.默认情况下该值为 false ,这会让 TweenMax.from() 渲染效果立即被执行,甚至是在延迟尚未结束之前。
     overwrite : Boolean - 如果 不 希望当前的缓动效果自动覆盖到其它的影响同一属性的缓动,请确保这个值设为 false。
     blurFilter : Object - 应用模糊滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:blurX(横向的模糊度), blurY(纵向的模糊度), quality(品质,默认值为2)
     glowFilter : Object - 应用发光滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:alpha(通明度),blurX , blurY , color(颜色),strength(强度), quality ,inner(内侧发光),knockout(挖空)
     colorMatrixFilter : Object - 应用颜色矩阵滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:colorize(色调),amount(总量),contrast(对比度),brightness(亮度),saturation(饱和度),hue(色相),threshold(阀值),relative(相关性),matrix(颜色矩阵)
     dropShadowFilter : Object - 应用阴影滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:alpha, angle(角度), blurX, blurY, color, distance(距离), strength, quality
     bevelFilter : Object - 应用斜角滤镜,需要传递一个具有下列(一个或多个)属性的对象做为参数:angle, blurX, blurY, distance, highlightAlpha(高亮区的透明度), highlightColor(高亮区的颜色),shadowAlpha(阴影区的透明度), shadowColor(阴影区的颜色), strength(强度), quality
      

关键属性:
- progress : Number (范围0 - 1,为 0 表示缓还未开始,0.5 缓动进行了一半,1 缓动结束)
- paused : Boolean (逻辑值)

关键方法:
- TweenMax.to(target:Object, duration:Number, vars:Object):TweenMax
- TweenMax.from(target:Object, duration:Number, vars:Object):TweenMax
- TweenMax.allTo(targets:Array, duration:Number, vars:Object):Array
- TweenMax.allFrom(targets:Array, duration:Number, vars:Object):Array
- TweenMax.sequence(target:Object, tweens:Array):Array
- TweenMax.getTweensOf(target:Object):Array
- TweenMax.isTweening(target:Object):Boolean
- TweenMax.getAllTweens():Array
- TweenMax.killAllTweens(complete:Boolean):void
- TweenMax.killAllDelayedCalls(complete:Boolean):void
- TweenMax.pauseAll(tweens:Boolean, delayedCalls:Boolean):void
- TweenMax.resumeAll(tweens:Boolean, delayedCalls:Boolean):void
- pause():void
- resume():void


示例:
对 MovieClip 进行连续的缓动,先用2秒钟时间让透明度降到 50%,然后用1秒钟时间滑落到 y 坐标为300的位置,使用如下的代码:

  import gs.TweenMax;
  TweenMax.sequence(clip_mc, [{time:2, alpha:0.5}, {time:1, y:300}]);

使用 Back.easeOut 函数对影片剪辑 clip_mc 进行缓动,缓动持续 5 秒钟,alpha 值变到 0.5,x 坐标变到 120,延迟 2 秒钟执行,缓动结束后,调用“onFinishTweenusing”,并且为这个函数传递几个参数(数值 5 和 对 clip_mc 的引用),代码如下:
  
  import gs.TweenMax;
  import fl.motion.easing.Back;
  TweenMax.to(clip_mc, 5, {alpha:0.5, x:120, ease:Back.easeOut, delay:2, onComplete:onFinishTween, onCompleteParams:[5, clip_mc]});
  function onFinishTween(argument1:Number, argument2:MovieClip):void {
   trace("The tween has finished! argument1 = " + argument1 + ", and argument2 = " + argument2);
  }

如果舞台上的影片剪辑已经处于期望的缓动结束时位置,而你希望它从其它位置用 5 秒钟的时间回到当前位置,(比如从比当前位置高 100 像素或屏幕外更高的地方,通过改变 y 属性,下落到当前位置)可以使用下面的代码:
  
  import gs.TweenMax;
  import fl.motion.easing.Elastic;
  TweenMax.from(clip_mc, 5, {y:"-100", ease:Elastic.easeOut});  


备注:
- 给参数值加上引号,表示对指定的属性进行相应操作。比如,使用 TweenMax.to(mc, 2, {x:"-20"}); 它将 mc.x 向左移动 20 像素,与此相同效果的代码是:TweenMax.to(mc, 2, {x:mc.x - 20});
- 可以对任何 MovieClip 使用 "volume" 缓动,就比如:
   TweenMax.to(myClip_mc, 1.5, {volume:0});
- 可以将 MovieClip 缓动成某种色调或颜色,使用 "tint" 属性,比如:
   TweenMax.to(myClip_mc, 1.5, {tint:0xFF0000});
- 想要对数组内容进行缓动,将数值放到一个叫 endArray 的数组中即可,例如:
   var myArray:Array = [1,2,3,4];
   TweenMax.to(myArray, 1.5, {endArray:[10,20,30,40]});
- 可以在任何时候终止缓动,使用 TweenMax.killTweensOf(myClip_mc); 函数。如果想强制终止缓动,可以传递一个 true 做为第二个参数,比如 TweenMax.killTweensOf(myClip_mc, true);
- 去除延迟回调函数,用 TweenMax.killDelayedCallsTo(myFunction_func);这项功能可以用来控制回调函数的优先级。
- 使用 TweenMax.from() 方法,可以使目标对象运动回它所在的位置。比如,你可以将对象在舞台上摆放整齐(缓动结束时的位置),然后利用缓动,让它们跑到那个位置上去,你可以将缓动初始位置的 x 或 y 或 alpha (或者其它你需要的属性)当做参数传递给这个方法函数

 

 =========================

 

TweenGroup 教程 &  使用

(2009-03-07 21:25:18)
标签:

it

TweenGroup.as

-------------------------------------------------------------------------------------------


内容:


 TweenGroup: 用于管理 TweenLite/TweenMax 补间动画.
 特性:
  
  - pause(), resume(), reverse(), or restart() 在同一个组

  - TweenGroup 行为类似于 Array,并且它是一个动态类. 你可以进行 push(), splice(), unshift(), pop(),slice(), shift(), 循环遍历, 通过下标访问.

    新建
    myGroup[2] = new TweenLite(mc, 1, {x:300}) 

    自动时间渲染管理 align 和交错 stagger 
    
  对齐渲染调整

    - myGroup.align = TweenGroup.ALIGN_SEQUENCE; //一个接一个

    - myGroup.align = TweenGroup.ALIGN_START; //同时开始,最大延时
    - myGroup.align = TweenGroup.ALIGN_END; //同时结束
    - myGroup.align = TweenGroup.ALIGN_INIT; //开始于延时

    - myGroup.align = TweenGroup.ALIGN_NONE; //随便
    
  - 交错并且对齐调整渲染

    若交错为 0.5,且对齐为 ALIGN_START,组中第二个将在第一个 0.5 秒后开始.然后第三个. 若对齐调整为 ALIGN_SEQUENCE, 一个完成后 0.5秒然后第二个.
   
  - 精准控制. 
    跳到 0.5:
      myGroup.progress = 0.5 (进度)
    你可以快进或快退
  
  - 组渲染完成处理 onComplete 属性, 传递参数 onCompleteParams 属性. 组渲染完成时分发一个完成事件,类型为Event.COMPLETE ,因些可以侦听.  

 
  - 循环与来回播放 myGroup.yoyo = 2; 来回

    myGroup.loop =2; 重复
    
  约 4KB

  


 它非常用实用价值,一旦了解它,你的生活将离不开它!
 

必须了解的方法:
 - pause():void
 - resume():void
 - restart(includeDelay:Boolean):void
 - reverse(forcePlay:Boolean):void
 - getActive():Array
 - mergeGroup(group:TweenGroup, startIndex:Number):void
 - updateTimeSpan():void
 - clear(killTweens:Boolean):void
 (还有 addEventListener() )
 
实用方法:

//-- 所有 动画 做同一渲染. BaseTweenClass 代表 [TweenLite | TweenMax]
 - allTo(targets:Array, duration:Number, vars:Object, BaseTweenClass:Class):TweenGroup

 

//-- 所有 动画 做同一渲染. BaseTweenClass 代表 [TweenLite | TweenMax]
 - allFrom(targets:Array, duration:Number, vars:Object, BaseTweenClass:Class):TweenGroup

 //-- 转换
 - parse(tweens:Array, BaseTweenClass:Class):Array

 

属性:
 - length : uint
 - progress : Number //-- 跳播
 - progressWithDelay : Number
 - paused : Boolean
 - reversed : Boolean //-- 激活倒放
 - duration : Number [只读,不能修改]
 - durationWithDelay : Number [只读,不能修改]]
 - align : String //-- 对齐
 - stagger : Number //-- 错开
 - onComplete : Function
 - onCompleteParams : Array
 - loop : Number
 - yoyo : Number //-- 来回,返回
 - tweens : Array
 - timeScale : Number  (仅支持 TweenMax 动画实例) //-- 快进,快退
 

示例: 
 
 3个动画 时序渲染:
  
  import gs.*;
  
  var tween1:TweenLite = new TweenLite(mc, 1, {x:300});
  var tween2:TweenLite = new TweenLite(mc, 3, {y:400});
  var tween3:TweenMax = new TweenMax(mc, 2, {blurFilter:{blurX:10, blurY:10}});
  
  var myGroup:TweenGroup = new TweenGroup([tween1, tween2, tween3]);
  myGroup.align = TweenGroup.ALIGN_SEQUENCE;
  
  
  若想动画类型相同,如下:
 
  var myGroup:TweenGroup = new TweenGroup([{target:mc, time:1, x:300}, {target:mc, time:3, y:400}, {target:mc, time:2, blurFilter:{blurX:10, blurY:10}}], TweenMax, TweenGroup.ALIGN_SEQUENCE);
 
 
 插入新动画:
  
  myGroup.splice(2, 0, new TweenLite(mc, 3, {alpha:0.5}));
 
 
 暂停并跳到 0.5秒:
  
  myGroup.pause();
  myGroup.progress = 0.5;
 

注意事项:
 4KB

 - 过时的用法,因为性能原因:

   TweenMax.sequence(), TweenMax.multiSequence(), TweenMax.allTo(), TweenMax.allFrom()  

从组内删除动画时并没有真正删除动画,它会继续运行,因些必须清除它:  

   TweenLite.removeTween()
 如果动画不播放,可能是重写问题.参考: 
   http://blog.greensock.com/overwritemanager/ 
 - 因为这个类比较新,我们将会更新它,如果遇到BUG,请告诉我们.

 

这是个发牌的例子:

  TweenGroup 中 "from " 的替代解决方案:

 

//-- 设置动画参数

for(var i:int = 8;i >= 0;i--){
    cardList[i].alpha = 0.5;
    var tween:TweenLite =

new TweenLite(cardList[i], 0.5, {x:391.5, y:180, alpha:1,

roundProps:[x,y],onComplete:doComplete, onCompleteParams:[[9-i]]} );
    tweenList.push(tween);
   }
   
//-- 建议使用构造,这种方式比较简单,当然你也可以一个一个的 PUSH,SPLICE,然后设置每个单独的属性
var tweenGroup:TweenGroup  = new TweenGroup(tweenList);

   tweenGroup.align = TweenGroup.ALIGN_SEQUENCE; //-- 一个接一个的发牌
   tweenGroup.stagger = 0; //-- 组内动画间隔 0ms

 

 
   tweenGroup.progress = 1; //-- 直接跳到结束,注意,这个播放过程是存在的,但时间极短,也许是 1ms.
   tweenGroup.reversed = true; //-- 必须要.
  

------------------------

tweenGroup.addEventListener(Event.COMPLETE, doAllComplete); //-- 组动画完成处理

 

 

-----------

这个类静态的方法,也很方便,但动画的播放不能错开.

 

======================================

 

TweenMax 教程 & 使用

(2009-03-08 16:34:18)
标签:

it

TweenMax.as

----------------------------------------------------------------------------------------------

内容:
 TweenMax 继承 TweenLite , 轻量,快速并增加了新的功能:比如 pause/resume, timeScale, event listeners, reverse(), restart(), setDestination(), yoyo, loop,
 rounding, 并且能够使用 progress 属性 跳到动画的任何位置.

默认比 TweenLite 激活更多的插件, 因此它功能齐全,它比 TweenLite 能做的更多. 如果你想整合其它动画引擎,可以考虑使用 TweenMax:
 
  - SPEED - 目前没有比它快的.   

     性能数据: http://blog.greensock.com/tweening-speed-test/
   
  诸多特性- 除了处理对象数字属性(x ,y )外,还能补间动画滤镜效果, 
    颜色, 声音, 色彩, 帧, 饱和度, 对比度, 色调, 色系, 亮度, 贝塞尔,

线条转换贝塞尔曲线, pause/resume, reverse(), restart(), 环绕值, 定点播放,最近旋转, 还有更多. 
    重写管理器是一个重要的新的亮点. 用于处理同一对象动画重叠时的效果.
   
  - 可扩展性- 参考 TweenLite.as
   
  可管理性 - 
    
  便于使用 - 
  
  - 更新- 
  
  - AS2 and AS3 - both.
 

参数:
 1) $target : Object - 渲染目标

 2) $duration : Number - 持续时间
 3) $vars : Object - 参数对象

 示例:

渲染 tweenmyClip  的 透明度 到 0.5 在 1秒内.
  TweenMax.to(myClip, 1, {alpha:0.5})


$vars object 属性(不需要插件):

 delay : Number - 延时渲染

 ease : Function - 缓动效果       

 easeParams : Array - 上面的参数

 onStart : Function - 开始时调用

 onStartParams : Array - 参数

 onUpdate : Function - 更新时调用

 onUpdateParams : Array - 参数
 onComplete : Function - 完成时调用

 onCompleteParams : Array - 参数

 persist : Boolean - 持久

 renderOnStart : Boolean - 渲染时机 ture 等待延时 false 不等待

 overwrite : int - 重叠渲染方式:
       - 0 (NONE): 
        
     - 1 (ALL): 
         
     - 2 (AUTO): 

         
     - 3 (CONCURRENT): 

            onStartListener : Function - 开始事件.

            监听它
            tweenMaxInstance.addEventListener(TweenEvent.START, myFunction);
 
 onUpdateListener : Function - 更新处理器

               
 onCompleteListener : Function - 完成处理器

    tweenMaxInstance.addEventListener(TweenEvent.COMPLETE, myFunction);
               
 yoyo : Number - 渲染完成后倒放.  值为 0 时,不会停.        
 loop : Number - 重复. 值为 0 时,不会停.
        
 timeScale : Number - 渲染速度 1 = 正常速度 , 0.5 = 一半的速度, 2 = 2倍速度


注意事项:

    有一个全局的静态属性 TweenMax.globalTimeScale 影响所有的 TweenMax 和TweenFilterLite 渲染动画(但不影响 TweenLite)
 
 startAt : Object - 开始参数,用于渲染开始位置.

   比如:

    如果你的影片当前位置为 100,你想渲染为 位置 0 到 500. 

       TweenMax.to(mc, 2, {x:500, startAt:{x:0}})


插件:
  插件信息: http://blog.greensock.com/plugins/
     下面插件在TweenMax中默认是激活的,如果您没有用到其中的插件,你可以在 TweenMax 类的构造函数中注释掉相应的插件激活行. 
   autoAlpha : Number - 透明度渲染.
        
   visible : Boolean - 显示隐藏渲染.
  
   volume : Number - 声音渲染
  
   tint : Number - 颜色渲染

      
   removeTint : Boolean - 为真移除色彩   


   frame : Number - 渲染特定的帧
  
   bezier : Array - 贝塞尔曲线       

        示例:

        设置控制点 x,y 坐标为 250,50.使你的 my_mc 在 0,0 坐标: 

         TweenMax.to(my_mc, 3, {x:500, y:0, bezier:[{x:250, y:50}]});
       
   bezierThrough : Array - 控制点数组方式.

         TweenMax.to(mc_mc, 3, {x:500, y:0, bezier:[{x:250, y:50},{x:250, y:100},{x:250, y:200}]});
        
   orientToBezier : Array (or Boolean) - 带方向的贝塞尔曲线 

       TweenMax 需要4个参数:
        1) 位置属性1 ("x")
        2) 位置属性2 ("y")
        3) 旋转属性property ("rotation")
        4) 度数(可选项- 确定方向)
        属性类型 数组.
        属性可以无限嵌套. 如果参数只传 true ,则默认为: [["x", "y", "rotation", 0]].
       提示: 不要忘记外层的括号,它代表参数的容器.


   hexColors : Object - 颜色RGB 
    
   shortRotation : Number - 最近旋转

          
   roundProps : Array - 渲染?: TweenMax.to(mc, 2, {x:300, y:200, alpha:0.5, roundProps:["x","y"]});
          
   blurFilter : Object - 模糊滤镜

         
   glowFilter : Object - 发光滤镜

                  
   colorMatrixFilter : Object - 颜色滤镜:
           colorize, amount, contrast, brightness, saturation, hue, threshold, relative, matrix
          
   dropShadowFilter : Object - 阴影滤镜:
          alpha, angle, blurX, blurY, color, distance, strength, quality
         
   bevelFilter : Object - 倾斜滤镜:
        angle, blurX, blurY, distance, highlightAlpha, highlightColor, shadowAlpha, shadowColor, strength, quality
      
 
关键属性:
 - progress : Number 进度 0 没有 0.5 一半 1 完成
 - timeScale : Number 动画速度

 - paused : Boolean 暂停
 - reversed : Boolean 倒放
 
关键方法:
 - TweenMax.to(target:Object, duration:Number, vars:Object):TweenMax
 - TweenMax.from(target:Object, duration:Number, vars:Object):TweenMax
 - TweenMax.getTweensOf(target:Object):Array
 - TweenMax.isTweening(target:Object):Boolean
 - TweenMax.getAllTweens():Array
 - TweenMax.killAllTweens(complete:Boolean):void
 - TweenMax.killAllDelayedCalls(complete:Boolean):void
 - TweenMax.pauseAll(tweens:Boolean, delayedCalls:Boolean):void
 - TweenMax.resumeAll(tweens:Boolean, delayedCalls:Boolean):void
 - TweenMax.delayedCall(delay:Number, function:Function, params:Array, persist:Boolean):TweenMax
 - TweenMax.setGlobalTimeScale(scale:Number):void
 - addEventListener(type:String, listener:Function, useCapture:Boolean, priority:int, useWeakReference:Boolean):void
 - removeEventListener(type:String, listener:Function):void
 - pause():void
 - resume():void
 - restart(includeDelay:Boolean):void
 - reverse(adjustStart:Boolean, forcePlay:Boolean):void
 - setDestination(property:String, value:*, adjustStartValues:Boolean):void
 - invalidate(adjustStartValues:Boolean):void
 - killProperties(names:Array):void
 
 
必看的例子:
 
 To tween the clip_mc MovieClip over 5 seconds, changing the alpha to 0.5, the x to 120 using the Back.easeOut
 easing function, delay starting the whole tween by 2 seconds, and then call a function named "onFinishTween" when
 it has completed and pass in a few parameters to that function (a value of 5 and a reference to the clip_mc),
 you'd do so like:
  
  import gs.*;
  import gs.easing.*;
  TweenMax.to(clip_mc, 5, {alpha:0.5, x:120, ease:Back.easeOut, delay:2, onComplete:onFinishTween, onCompleteParams:[5, clip_mc]});
  function onFinishTween(argument1:Number, argument2:MovieClip):void {
   trace("The tween has finished! argument1 = " + argument1 + ", and argument2 = " + argument2);
  }
 
 If you have a MovieClip on the stage that is already in it's end position and you just want to animate it into
 place over 5 seconds (drop it into place by changing its y property to 100 pixels higher on the screen and
 dropping it from there), you could:
  
  import gs.*;
  import gs.easing.*;
  TweenMax.from(clip_mc, 5, {y:"-100", ease:Elastic.easeOut});
  
 To set up an onUpdate listener (not callback) that traces the "progress" property of a tween, and another listener
 that gets called when the tween completes, you could do:
 
  import gs.*;
  import gs.events.TweenEvent;
  
  TweenMax.to(clip_mc, 2, {x:200, onUpdateListener:reportProgress, onCompleteListener:tweenFinished});
  function reportProgress($e:TweenEvent):void {
   trace("tween progress: " + $e.target.progress);
  }
  function tweenFinished($e:TweenEvent):void {
   trace("tween finished!");
  }
 

提示:


  
 - 使用自己的监听器:
   var myTween:TweenMax = new TweenMax(my_mc, 2, {x:200});
   myTween.addEventListener(TweenEvent.COMPLETE, myFunction);