基于计时器的动画
作为计时器动画使用的关键类,不出意料,它就是 flash.utils.Timer。同时我们还需要
flash.events.TimerEvent 类。
使用计时器实际上与使用 enterFrame 没什么两样。只需要我们去创建一个计时器
(Timer),告诉它多久“滴答响”一声,并侦听 TimerEvent.TIMER 事件,就像对
Event.ENTER_FRAME 事件的侦听一样。哦,还要告诉计时器何时开始!接下来,计时器
就会每隔一段时间广播一个计时事件,它将调用赋给它的函数进行处理。计时器触发的间隔
以毫秒为单位,在创建该计时器时指定。让我们来看一个简单的例子(可在 Timer1.as 中找
到):
package {
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Timer1 extends Sprite {
private var timer:Timer;
public function Timer1() {
init();
}
private function init():void {
timer = new Timer(30);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
}
private function onTimer(timer:TimerEvent):void {
trace("timer!");
}
}
}
重要的部分加粗表示。我们创建一个计时器,告诉它每隔 30 毫秒触发一次,意味着每秒约
33 次。添加一个事件的侦听器并将它起动。 onTimer 方法与我们以前用的 onEnterFrame
类似。
这是我们所要知道计时器的大部分内容。它还有其它两个漂亮的特征。一个是在创建计
时器时,可以通过第二个参数,repeatCount,告诉它运行的次数。假设我们要让计时器每秒
运行一次,总共执行 5 秒。就可以这样做:
timer = new Timer(1000, 5);
如果没有指定重复的次数,或传入 0,那么计时器将无限地运行。
另一个好东西是可以让计时器在某个点上启动或停止,只需要调用 timer.stop 或
timer.start 即可。在某些例子中,这样做比删除和重新加入事件侦听器更简单一些。