考虑到淡入和淡出效果都是基于同样的数学模型,可以在代码实现时运用函数将其过程模块化。
(1)建立参数fadeInOut(),该函数不需要返回值,但显然需要参数,分别是对象anim_obj,以及对象的变化速率fade_rate。代码如下:
function fadeInOut(anim_obj:DisplayObject,fade_rate:Number):void{
return;
}
(2)在函数内添加代码,以根据变化速率fade_rate控制动画对象anim_obj的alpha属性。本函数将来是在定时器的触发响应函数中周期调用的,所以每一次执行时,只需要修改1*fade_rate到anim_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:DisplayObject,fade_rate:Number):void{
anim_obj.alpha+=fade_rate;
return;
}
(4)至此,代码初步成型了。运行程序,可以看到显示对象animObject1逐渐淡出的效果。如果把fadeInOut函数中的fade_rate设为正值,这可以令alpha初始状态为0的不可见对象逐渐淡入。fade_rate的绝对值越小,淡入淡出的过程就越平滑,读者可自行实验。
使用如此简短的代码,便能实现淡入淡出效果,可见AS3确实是很简便的动画控制语言。下一节将介绍如何进一步强化模块,使其能胜任更多的任务。