实例详解AS代码完成Flash补间动画
说到补间动画,很多人都会想到在时间轴里定义两个关键帧,然后创建一个补间,其实AS也可以完成等效的工作,而且能完成的更好。要用程序创建补间,有两种方法,一种是通过setInterval函数,定时移动mc,可以达到效果,但比较麻烦。第二种就是今天要推荐的通过Tween类来创建补间动画。
为什么Tween比setInterval方便呢,首先代码量少,看着舒服,其次,Tween类可以使用一些比较有名的缓动类,还有,Tween类可以广播和侦听事件,这三点就足以让我们选择Tween而不是setInterval。
先来说一下Tween类的用法
要用Tween类,首先要导入Tween类
import mx.transtions.Tween; |
Tween类的语法是
var twMove:Tween=new Tween(mClip,"_x",null,0,550,10,true); |
解释一下:
mClip:显示对象——对要显示对象的引用
_x:要补间的属性
缓动函数:对一个缓动函数的引用,这里是null,就是不引用
0——补间属性的开始值
550——补间属性的结束值
10——持续时间
使用秒——true 使用,false不使用
由于Tween类广播事件,因此可以对Tween类建立侦听器,具体Tween类的方法,请查看帮助。
下面是一个实例,请事先做好链接标识符为“ball”的MC,拷贝以下代码到第一帧。
import mx.transitions.Tween; import mx.transitions.easing.*; var aClass=[Back,Bounce,Elastic,Regular,Strong]; var aEasingMethod:Array=new Array(); //在aEasingMethod中放入每个缓动方法 for(i=0; i < aClass.length; i++){ aEasingMethod.push(aClass[i].easeIn); aEasingMethod.push(aClass[i].easeOut); aEasingMethod.push(aClass[i].easeInOut); } //定义初始变量 var nX=10; var Y=20; var oClips:Object=new Object(); //建立侦听器 var tListener:Object=new Object(); tListener.onMotionFinished=function(twObject:Tween){ //缓动结束时按原路径返回 twObject.yoyo(); } for(i=0; i < aEasingMethod.length; i++){ depth=this.getNextHighestDepth(); mClip=this.attachMovie("ball","ball"+i,depth,{_x:nX,_y:Y}); //设置x坐标 nX+=mClip._width+10; //将一个缓动方法添加到oClips对象 oClips[mClip._name]=aEasingMethod[i]; //当用户点击时开始_y属性的补间 mClip.onPress=function(){ var twMove:Tween = new Tween(this,"_y",oClips[this._name],20,400,4,true); //添加侦听器 twMove.addListener(tListener); } } |
用鼠标点击小球,你会看到AS实现的补间动画效果