注册 登录
游戏开发者社区 返回首页

KevinBlack的个人空间 http://bbs.9ria.com/?75741 [收藏] [复制] [分享] [RSS]

日志

TweenLite TweenMax 中文学习笔记(二)

已有 1715 次阅读2011-3-10 11:57 |

Tween是一个很强大的工具包,里面的API可以用来做各种动画效果,缓冲效果。

官网:http://www.greensock.com

Docshttp://www.greensock.com/as/docs/tween/  (或者在下载包的docs文件夹下)

如何使用pluginshttp://www.snorkl.tv/2010/09/learn-how-to-use-the-tweenlite-plugin-explorer/

下载包demo_swfs文件下PluginExplorer-v11.swf文件

缓冲的写法:TweenMax.allFrom(mcs, 1,  { ease:Quad.easeOut}));ease后的参数参考easing包下的类和demo_swfs文件夹下EaseVisualizer.swf文件。

 

greensock下主要包括:TweenLiteTweenMaxTweenNanoTweenProxyTimelineLiteTimelineMaxOverwriteManagerTweenAlign;为最主要的APITweenMaxTweenLite的加强版,TimelineMaxTimelineLite的加强版。

easing中包含了缓冲类;plugins包含了许多插件;textSplitTextField专门用来处理文本。

TweenMax

每一次对TweenMax.to()TweenMax.from()方法的调用都会返回一个TweenMax实例。

1.1.1每个TweenMax实例含有如下属性: 

currentProgress:一个0-1之间的数字,表示缓动的进度,0.5表示进行到一半,1表示完成;

currentTime:只可写,已渲染的时间;

data:保存你想保存的数据;

defaultEase:静态的,提供一种容易的方式来改变缓冲公式;

delay:缓冲开始前的延时;

duration:Number:消耗时间;

globalTimeScale:静态的,类似于timeScale

killTweensOf

paused:tween/timeline状态;

repeat:重复次数,-1表示无限次;

repeatDelay:重复间的时间间隔;

reversed:缓冲反向状态;

startTime:开始时间;

timeScale:Number-缓动速度的倍数,1表示正常速度,2表示2倍速度 

totalDuration:包括重复和重复延时的总时间;

totalProgress:总进程,0-1之间;

vars:很强大的参数,可以配置很多

target:Object(在缓动开始以后更改target对缓动不会产生影响

yoyo:为true时,缓冲会逆向。

1.1.2实例方法

TweenMax(target:Object, duration:Number, variables:Object):TweenMax

Description:构造方法。属性值将从缓动开始的时刻缓动到variables对象中定义的值(若使用runBackwards:true,则效果相当于调用TweenMax.from()方法

Parameters: 

target:Object-要缓动的目标对象 

duration:Number-缓动的持续时间 

variables:Object-定义要缓动的目标对象的属性(拥有TweenLite所拥有的所有特性,同时额外增加了一些属性): 

timeScale:Number-控制缓动速度的倍数。1表示正常速度,2表示双倍速度等。(技巧:如果你想缓慢地增大或者减慢缓动的速度,可以使用另外一个tween来缓动timeScale属性

bezier:Array-贝赛尔缓动允许你使用非线性的缓动路径。例如:也许你想要将一个DisplayObject(0,0)缓动到(500,0)的位置,但是又想在中间的位置有一向下的弧线。你可以传入任意个数的bezier array,每一个代表一个”control point”(参见ADOBE官方文档

bezierThtough:Array-基本同bezier一致,只不过这里传入的参数并不是”control point”(参见ADOBE方文档),而是要经过的点,这比使用control point更加直观 

orintToBezier:Array(or Boolean)-设计者/开发人员有时候想让MovieClip/Sprite在缓动时能够朝向Bezier路线,而orientToBezier使得实现这个效果变得非常简单。为了使旋转角度更加精确,TweenMax需要4个方面的信息:
第一个位置:典型地如”X”
第二个位置:典型地如”Y”
旋转属性:典型地如”rotation”
旋转的度数
orientToBezier
属性应该包含一个数组,而这个数组又包含含有上面那些信息的众多数组。为了最大程度地实现可扩展性,你可以往这个数组中传入任意个数的数组,每一个数组代表一个旋转属性。这在3D效果中是非常方便的,可以绕多个轴旋转。如果你正使用标准的2D Bezier缓动,传入一个Booleantrue,TweenMax将使用一个典型的设置[[”x”,”y”,”rotation”,0]](提示:不要忘记外层的数组,这里有2”[”,”]”) 

hexColors:Object-尽管16进制颜色值是numbers,但你如果按照常规方法去缓动它的话,将会发现缓动的并不是非常的平滑。为了正确的缓动颜色值,RGB值必须分开进行缓动。TweenMax使这变得非常简单。使用TweenMax的这个特殊的hexColors属性来将显示对象的某个属性从一个16进制的颜色值缓动到另一个16进制的颜色值。这里应该传入一个对象,他包含你想要缓动的hex color属性,并且属性名与hex color的属性名要一致。例如:如果你的my_obj对象有一个”myHexColor”属性,你想要将它在2秒内缓动到红色(0xff0000),可以这样写: 

TweenMax.to(my_obj, 2, {hexColors:{myHexColor:0xFF0000}});

你可以传入任意个数的hexColor属性

onStartListener:Function-在缓动开始时触发的方法,效果同myTweenMaxInstance.addEventListener(TweenEvent.START, myFunction); 

onUpdateListener:Function-当缓动对象的属性值发生改变时触发的方法,效果同myTweenMaxInstance.addEventListener(TweenEvent.UPDATE, myFunction); 

onCompleteListener:Function-当缓动结束时触发的方法,效果同myTweenMaxInstance.addEventListener(TweenEvent.COMPLETE, myFunction); 

runBackwards:Boolean-对调缓动的起始值和结束值。在from()方法返回的TweenMax实例中,此属性将自动设为true 

overWrite:int-控制当这个缓动实例被创建时应用在同一个目标对象上的其他缓动效果将被如何处理。你可以使用OverwriteManager.init()方法会将所有缓动效果的overWrite设置为默认值,或者为每个缓动单独设置。以下是所有的可选参数

0(NONE):不覆盖任何缓动。这是速度对快的模式,但是你必须非常谨慎,如果任何2个缓动有重复的属性,将会产生冲突 

1(ALL):(这将是默认值除非调用了OverwriteManager.init()方法)所有应用在同一个对象上的其他缓动将会被立即覆盖当这个缓动被创建时 

2(AUTO):(如果OverwriteManager.init()方法被调用,这将是默认值)当缓动开始时自动搜索并覆盖拥有重复属性的其他缓动效果 

3(CONCURRENT)当缓动开始时覆盖同一个对象上的其他处于活动状态的缓动效果 

pause():void-暂停缓动,当缓动被暂停时,”paused”属性将被设为true

resume():void-恢复一个处于暂停状态的缓动,并将”paused”属性设为false

restart():void-重新开始缓动

reverse(adjustDuration:Boolean):void-反转缓动的方向,甚至反转ease,例如:你的缓动使用Strong.easeOut,经过反转之后它将变为Strong.easeIn以便使过度过程更加的平缓
Parameters:

adjustDuration:设想这种情况,有一个菜单,当用户指针滑过时开始缓动出现,但是当用户作出其他动作,菜单需要缓动回原来的位置。将adjustDuration属性设为true,菜单将会在缓动出现的时间内缓动消失。因此如果菜单缓动出现的时间为2秒,而你想要它在1.5秒内消失,则必须更改全局变量duration。如果adjustDuration设为false,缓动消失将会在0.5秒内完成 

setDestination(property:String, value:*, adjustStart:Boolean):void-改变缓动中指定的属性的目标值,例如:

varmyTween:TweenMax = new TweenMax(mc, 2{x:500, y:200});  

myTween.setDestination("x"100);

Parameters:

· property:属性名 

· value:新的目标值 

· adjustStart:通常情况下,缓动是在一个时间段内将一些属性从起始值弄到结束值。如果在缓动还没有开始的时候设置adjustStart,将不会对缓动产生任何影响。但是,当缓动已经开始后,假设缓动”x”属性,起始值是0,目标值是100duration10秒,easeLinear,那么在缓动到5秒的时候,x应该是100的一半50,如果将x设为10adjustStart设为false,x将直接跳至5(因为10的一半是5)再开始缓动,如果这时的adjustStarttrue,则会从50开始,往10进行缓动。默认情况下,为了呈现一个更加平滑的缓动,adjustStarttrue,它将自动适应新的起始值。
IMPORTANT:由于上面这个例子是进行到一半,所以不能简单地将起始值设为50-它将直接变为100以抵消和避免突然的跳转。因为在你的缓动中有可能用到各种各样的ease方程,而这个新值(缓动进行到某一时刻的值)将是很不确定的,所以,使用Linear方程是很容易预料这个值的,但是如果使用的是Strong.easeIn方程并在缓动进行到90%的时候调用setDestination()方法,新的起始值会被明显地抵消。在setDestination()之后再调用reverse()yoyo()loop()一定要注意这点。 

静态方法:
TweenMax.to(target:Object, duration:Number, variables:Object):TweenMax
Description
:创建一个TweenMax实例(静态工厂方法),同时避免了你创建一个对该实例的引用而造成垃圾回收不利的情况。
Parameters:
同上

TweenMax.from(target:Object, duration:Number, variables:Object):TweenMax
to()方法完全一致,只不过是将variables中指定的值作为起始值,将当前值作为缓动的目标值
Parameters:
TweenMax.to

public static function allTo(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array 

Description:提供一个简单的方法将多个不同的对象缓动到相同的目标值。它同样需要几个特殊的属性,例如”delayincrement”属性将指定一个时间间隔来错开每个缓动效果。例如有5MovieClip,想要在它们淡出的同时向下移动100像素,同时每个缓动错开0.2秒,代码可以如下写:

TweenMax.allTo([mc1, mc2, mc3, mc4, mc5], 1, {y:"100", visible:false}0.2});

Parameters:

· targets:Array-存放目标对象的一个数组 

· duration:Number-缓动持续时间 

· vars:Object-要缓动的属性的目标值(from()方法中表示缓动的起始值),IMPORTANT:to()方法和from()方法中的属性一致,额外的属性如下

odelayIncrement:Number-定义每个缓动错开的时间(以秒为单位

oonCompleteAll:Function-当所有的缓动都结束时调用该方法 

oonCompleteAllParams:Array-传入onCompleteAll方法中的参数 

· stagger  缓冲间的时间间隔 

· onCompleteAll 完成后的回调方法 

· onCompleteAllParams  An Array of parameters to pass the onCompleteAll function when all the tweens have completed.

TweenMax.allFrom(targets:Array, duration:Number, vars:Object):Array
Description:
基本同allTo()方法,只不过是将指定的属性值作为缓动的起始值
Parameters:
allTo()方法完全一致

TweenMax.getTweensOf(target:Object):Array
Description:
获得作用在目标对象上的所有缓动对象
Parameters:
target:Object-
目标对象

TweenMax.isTweening(target:Object):Boolean
Description
:检测目标对象在当前时刻是否正在缓动中
Parameters:
target:Object-
目标对象

TweenMax.getAllTweens():Array
Description:
返回所有的缓动对象(包括暂停的)

TweenMax.killAllTweens(complete:Boolean):void
Description:
清除所有的缓动效果(不是delayedCalls)
Parameters:
complete:Boolean-
如果要强制缓动完成(即所有的属性缓动到目标值而不是停留在当前值),将此属性设为true,默认是false

TweenMax.killAllDelayedCalls(complete:Boolean):void
Description:
清除所有delayedCalls
Parameters:
complete:Boolean-
如果想要强制delayedCall执行完成,将此属性设为true;

TweenMax.pauseAll(tweens:Boolean, delayedCalls:Boolean):void
Description:
提供一个简单的方法来暂停所有的TweenMax缓动效果或者delayedCalls(并不能暂定TweenLite缓动)

Parameters: 

tweens:如果要暂停缓动,将此值设为true(默认就是true) 

delayedCalls:要暂停delayedCalls,将此值设为true(默认是false) 

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册
验证问答 换一个 验证码 换一个

手机版|9RIA.com ( 京ICP备11007422号-2 

GMT+8, 2014-9-21 22:06 , Processed in 0.039460 second(s), 17 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部