十一 302008
 

好久没去GrennSock的博客逛逛了,今天意外点到。发现了好东东-TweenGroup。最新版本是11月25日更新的0.997版。

TweenLite一直是我非常喜欢的缓动类,简单,高效,省资源,以致我对Flash内置的缓动类不熟悉,-_-!

今天的焦点不是TweenLite 而是TweenGroup,呵呵。

啥是TweenGroup咧?

官方的描述就是“TweenGroup is a very powerful, flexible tool for managing groups of TweenLite/TweenFilterLite/TweenMax tweens”(TweenGroup是一个非常高效的,灵活的用来管理TweenLite/TweenFilterLite/TweenMax 缓动的工具)

太抽象了。

–Update2008/12/01

大致地翻译一下吧。本人翻译功底不是很强悍,欢迎各位指正。原文:

TweenGroup – Manage Sequences and Groups of TweenLite/FilterLite/Max Tweens

TweenGroup是一个非常高效的,灵活的用来管理TweenLite/TweenFilterLite/TweenMax 缓动的工具(包括在各个下载包中)。一下是其中的一些特性:

>>作为一个整体pause(),resume(),reverse(),restart()组(提示:这种方法将非常容易地为TweenLite实例添加这些功能而避免了通过使用TweenLite带来的文件大小的增加)。

>>使用TweenGroup就像使用数组,所以您可以push(),splice(),unshift(),pop(),slice(),shift(),遍历要素,像这样直接获取元素(myGroup[1]),想这样直接赋值(myGroup[2]=new TweenLite(mc,1,{x:300})).并且可以自适应您之前使用”align”和”stagger”设置的对齐和错开的缓动时间(it’ll automatically adjust the timing of the tweens in the group to honor the alignment and staggering effects you set with the “align” and “stagger” properties,翻译起来有点拗口-_-!)

>>像这样的设置缓动的对齐

myGroup.align = TweenGroup.ALIGN_SEQUENCE;
//stacks them end-to-end, one after the other
myGroup.align = TweenGroup.ALIGN_START;
//tweens will start at the same time
myGroup.align = TweenGroup.ALIGN_END;
//tweens will end at the same time
myGroup.align = TweenGroup.ALIGN_INIT;
//same as ALIGN_START except that it honors any delay set in each tween.
myGroup.align = TweenGroup.ALIGN_NONE;
//no special alignment

>>Stagger 使得缓动动作错开(单位:秒)。比如说,如果stagger值是0.5并且对齐属性是ALIGN_START,那么第二个缓动动作将在第一个缓动动作开始后的0.5秒开始,然后,第三个也将会在0.5秒后开始。如果对齐属性是ALIGN_SEQUENCE ,那么在每个缓动动作之间都会有0.5秒的停顿。

>>可以在任何时候通过设置/获取”progress”属性,精确地控制(缓动)组的进程。

比如说,要跳转至缓动动作组的中间。可以这样非常简单地实现:

//Code
myGroup.progress = 0.5;

您可以通过设置progress值来控制缓动动作组的快速前进和快速后退

>>您可以使用onComplete属性在TweenGroup完成之后调用任何的方法。也可以使用onCompleteParams属性给方法传任何个数的参数。在As3版本中,您还可以使用COMPLETE事件。如果您喜欢,可以通过使用addEventListener()方法取代onComplete。

>>使用Loop or yoyo 设置次数或者无限次。比如说您设置您的TweenGroup yoyo(yoyo:完成之后将执行reverse())为2次,只要这样做就可以了myGroup.yoyo=2;(如果只是要循环两次,只需要这样做myGroup.loop=2);

>>对于生成的SWF文件,只(比未使用TweenGroup)增加了大于4KB(不包括TweenLite和OverwriteManger的那4KB)

属性

>>length:uint 组中缓动动作的个数。

>>progress:Number 用0到1之间的数表示整个组的进度(不包括任何初始化的时间)。0代表没开始,0.5代表完成一半,1代表已完成。

>>progressWithDelay:Number  用0到1之间的数表示整个组的进度(包括任何初始化的时间)。0代表没开始,0.5代表完成一半,1代表已完成。

>>paused:Boolean 获取/设置组的状态是否为暂停。

>>reversed:Boolean 获取/设置组的状态是否为倒置(反转)。

>>align:String 控制缓动动作在组中的定位。通常地,最好使用常量TweenGroup.ALIGN_SEQUENCE, TweenGroup.ALIGN_START, TweenGroup.ALIGN_END, TweenGroup.ALIGN_INIT, 或者 TweenGroup.ALIGN_NONE

>>stagger:Number 根据当前的定位(即以上的align)控制缓动动作之间的时间间隔(以秒计)。比如说,如果align=TweenGroup.ALIGN_SEQUENCE;stagger=0.5;结果是每个缓动动作间都会有0.5秒的间隔;如果align=TweenGroup.ALIGN_START,那么每个缓动动作之间的时间间隔都会有0.5秒的递增(例:第一个动作间隔是0秒,第二个是0.5秒,第三个是1秒……)

>>duration:Number [只读]组中的缓动动作的时间(以秒计)不包含任何初始化的时间

>>durationWithDelay:Number [只读]组中的缓动动作的时间(以秒计)包含任何初始化的时间

>>onComplete:Function 在整个TweenGroup完成的之后调用的方法

>>onCompleteParams:Array:如果你需要传输确定的参数到您的onComplete方法中的时候请使用onCompleteParams

>>loop:Number 设置成0将是无限循环,或者设置成一个整形将重复设置的数字的次数。比如说,如果要执行TweenGroup循环两次,那么请设置loop=2.

>>yoyo:Number 设置成0将是无限的前进/后退循环。或者设置成一个整形的数(每一个方向运动是一次yoyo)。比如说要将TweenGroup向前进,然后向后退。然后再一次向前再停止。请设置yoyo=2.

实例方法

(除了标准的Array方法,比如 concat(), push(), shift(), unshift(), splice())

TweenGroup(tweens:Array, DefaultTweenClass:Class, align:String, stagger:Number)
>>描述:构造方法

>>参数:

  • tweens:Array:一个TweenLite/TweenFilterLite/TweenMax的实例数组或者一个至少包含了”target”和”time”参数的Object,比如这样的[{target:mc, time:2, x:300},{target:mc2, time:1, alpha:0.5}]
  • DefaultTweenClass:Class  定义一个缓动类用于转换一个为被TweenLite/TweenFilterLite/TweenMax声明的Object。只可以是TweenLite, TweenFilterLite, 或者 TweenMax
  • align:String 控制缓动动作在组中的定位。可选项TweenGroup.ALIGN_SEQUENCE, TweenGroup.ALIGN_START, TweenGroup.ALIGN_END, TweenGroup.ALIGN_INIT, 或者 TweenGroup.ALIGN_NONE
  • stagger:Number 根据当前的定位(即以上的align)控制缓动动作之间的时间间隔(以秒计)。比如说,如果align=TweenGroup.ALIGN_SEQUENCE;stagger=0.5;结果是每个缓动动作间都会有0.5秒的间隔;如果align=TweenGroup.ALIGN_START,那么每个缓动动作之间的时间间隔都会有0.5秒的递增(例:第一个动作间隔是0秒,第二个是0.5秒,第三个是1秒……)

pause():void

>>描述:暂停TweenGroup

resume():void

>>描述:继续执行一个暂停的TweenGroup

restart(includeDelay:Boolean):void

>>描述:从头开始一个TweenGroup

>>参数:通常的,restart()将立即从头开始(不包括任何的延迟),如果您想包含计算的延迟时间,请将includeDelay设为true

reverse(forcePlay:Boolean):void

>>描述:将整个缓动组反转过来(看起来好像向后退)。如果当reverse()调用时TweenGroup已经完成了一部分,那么时间将会自动调整以确保没有跳过/忽略发生。比如说,如果一组缓动动作从开始至结束要10秒,当您在第8秒调用reverse(),那么它将向后倒退到开始。您可以调用reverse()您所想要的任何次数,并且它将保持翻转的方向。所以,如果您调用了两次reverse(),那么它将按照原来的(向前)的方向

>>参数

>>forcePlay:当TweenGroup 未完成或者已经调用了restart()之后强制执行resume();

getActive():Array

>>描述:提供了一个非常简单的方法去检查哪些(如果存在)目前是活动的。活动的缓动动作指的是没有暂停且在进程清单中了

mergeGroup(group:TweenGroup,startIndex:Number):void

>>描述:将两个TweenGroup合并起来。您可以控制要并入的TweenGroup的合并起始序号,如果您没有定义,那么整组都会被合并。

>>参数:
>>group:要合并的数组
>>startIndex:从新的数组中开始剪切的起始序号。比如说tweenGroupA有三个元素,然后如果您想从(tweenGroupA)第一个的元素开始将tweenGroupB添加进来,那么请这样调用tweenGroupA.mergeGroup(tweenGroupB,1);

updateTimeSpan():void

>>描述:为了精确地管理,分析整个组从初始化、开始一直到结束以及延迟的时间。通常的,TweenGroup内部处理这些,但是如果缓动动作是独立于TweenGroup操作或者如果一个缓动动作自身有”loop”或者”yoyo”这样的特殊属性并且值是true,这些将会导致您使用updateTimeSpan()重新调整时导致这些值非标定。

clear(killTweens:Boolean):void

>>描述:从组中移除所有缓动动作并且使用TweenLite.removeTween()删除所有缓动动作

>>参数:

>>killTweens:确定是删除所有缓动动作(仅仅是从组中删除,但继续保留在渲染队列/内存)

静态方法

TweenGroup.allTo(targets:Array, duration:Number, vars:Object, BaseTweenClass:Class):TweenGroup

>>描述:提供了一个方法一共多个对象缓动到同样的值。它通常接受一些特殊的属性,如将各个缓动动作错开的”stagger”。比如说,如果当您要将5个MovicClip渐隐的时候要将MovieClip下移100个像素,并且开始时间错开0.2秒,那么您可以这样写:

//Code:
TweenGroup.allTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"100", alpha:0, stagger:0.2});

主要提示:如果在任一缓动动作元素中使用了TweenMax或者TweenFIlterLite,请确定您定义了BaseTweenClass了。因为默认地所有元素是TweenLite的实例。

>>参数

>>targets:Array 一个缓动动作的数组

>>duration:Number 缓动动作的时间(以秒计)

>>vars:Object 一个包含了你要缓动动作的最终数值的对象(如果您使用了TweenMax.allForm()方法,那么这些变量将定义开始的数值

特殊的属性
>>重要的:接受像to()和from()这样的额外的特殊属性(详细列表请参考tweenmax.com ),并且增加以下的

>>stagger:Number -每个缓动动作的延迟时间(以秒计)。这在将每个缓动动作分开是非常有用的。

>>onCompleteAll:Funtion 如果您要在所有缓动动作完成后调用使用方法,请使用它。

>>onCompleteAllParams 一个要传入onCompleteAll调用的方法的参数数组。

>>BaseTweenClass:Class:定义要使用的缓动类。选项有:TweenLite, TweenFilterLite, 或者TweenMax.比如说,如果任何一个缓动动作要使用TweenMax的特殊属性。请这样做

TweenGroup.allTo([mc1, mc2, mc3], 1, {y:"100", stagger:0.2}, TweenMax);

TweenGroup.allFrom(targets:Array, duration:Number, vars:Object, BaseTweenClass:Class):TweenGroup

>>描述:与TweenGroup.allTo()完全一样。但是,无论您如何定义他们目前的方向,他们将对您定义的TO进行反方向地执行缓动动作。这个方法在这种情景下是非常方便的:当舞台上的元件将要结束时您只要知道他们的目的位置即可。

>>参数:与TweenGroup.allTo()一致。

TweenGroup.parse(tweens:Array,BaseTweenClass:Class):Array

>>描述:将一个含有TweenLite/TweenFilterLite/TweenMax的示例或者对象转换为BaseTweenClass的兑现。比如,[{target:mc1, time:2, _x:300},{target:mc2, time:1, _y:400}]

>>BaseTweenClass:定义一个缓动类用户定义转换的目标类。选项有:TweenLite, TweenFilterLite, or TweenMax.

例子和FAQ俺暂不翻译啦:)

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>