8.4.2 脚本实现

  考虑到淡入和淡出效果都是基于同样的数学模型,可以在代码实现时运用函数将其过程模块化。

(1)建立参数fadeInOut(),该函数不需要返回值,但显然需要参数,分别是对象anim_obj,以及对象的变化速率fade_rate。代码如下:

function fadeInOut(anim_obj:DisplayObjectfade_rate:Number):void{

         return;

         }

(2)在函数内添加代码,以根据变化速率fade_rate控制动画对象anim_objalpha属性。本函数将来是在定时器的触发响应函数中周期调用的,所以每一次执行时,只需要修改1*fade_rateanim_obj.alpha即可。只需要一条语句就能达到目的。

         anim_obj.alpha+=fade_rate;

(3)将此函数添加到例8-4中,修改定时器响应函数,注释掉原有的语句,新添加对fadeInOut()的引用。整体代码如下:

var animTimer:Timer = new Timer(50 100);

animTimer.addEventListener("timer" animTimerHandler);

animTimer.addEventListener("timerComplete" animComplete);

animTimer.start();

 

function animTimerHandler(event:TimerEvent):void {

//动画代码编写入口

//animObject1.alpha=(animObject1.alpha==1?0:1);

fadeInOut(animObject1-0.05)//新增对fadeInOut()函数的引用

}

//响应定时器结束事件

function animComplete(event:TimerEvent):void {

animObject1.alpha=1;

}

//自定义的模块

function fadeInOut(anim_obj:DisplayObjectfade_rate:Number):void{

anim_obj.alpha+=fade_rate;

         return;

         }

(4)至此,代码初步成型了。运行程序,可以看到显示对象animObject1逐渐淡出的效果。如果把fadeInOut函数中的fade_rate设为正值,这可以令alpha初始状态为0的不可见对象逐渐淡入。fade_rate的绝对值越小,淡入淡出的过程就越平滑,读者可自行实验。

使用如此简短的代码,便能实现淡入淡出效果,可见AS3确实是很简便的动画控制语言。下一节将介绍如何进一步强化模块,使其能胜任更多的任务。

 

你可能感兴趣的:(8.4.2 脚本实现)