在 ActionScript 3.0 中處理計時功能時,一般會使用 Timer 類別 (flash.utils.Timer),每當達到指定的時間間隔,這個類別就會傳送事件。
若要啟動計時器,您必須先建立 Timer 類別的實體,並指示產生計時器事件的頻率,以及要產生多少次事件才停止。
例如,下列程式碼會建立 Timer 實體,每秒傳送一次事件,持續 60 秒:
var oneMinuteTimer:Timer = new Timer(1000, 60);
每當達到指定的間隔時,Timer 物件就會傳送 TimerEvent 物件。TimerEvent 物件的事件類型為 timer (由常數 TimerEvent.TIMER 所定義)。TimerEvent 物件包含的屬性與標準 Event 物件相同。
如果將 Timer 實體設定為固定次數的間隔,那麼當達到最後的間隔時,也會傳送 timerComplete 事件 (由常數 TimerEvent.TIMER_COMPLETE 所定義)。
下面是一個小型樣本應用程式,顯示如何使用 Timer 類別:
package
{
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class ShortTimer extends Sprite
{
public function ShortTimer()
{
// creates a new five-second Timer
var minuteTimer:Timer = new Timer(1000, 5);
// designates listeners for the interval and completion events
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
// starts the timer ticking
minuteTimer.start();
}
public function onTick(event:TimerEvent):void
{
// displays the tick count so far
// The target of this event is the Timer instance itself.
trace("tick " + event.target.currentCount);
}
public function onTimerComplete(event:TimerEvent):void
{
trace("Time's Up!");
}
}
}
建立 ShortTimer 類別時,會建立 Timer 實體,此實體會每秒計時一次,持續五秒。接著會將兩個偵聽程式加入計時器,一個用來偵聽每次計時,另一個則偵聽 timerComplete 事件。
接下來會啟動計時器,從現在開始,onTick() 方法就會每一秒執行一次。
onTick() 方法只會顯示目前的計時計數。等到五秒一過,onTimerComplete() 方法會執行,指出時間已到。
當您執行這個樣本時,會在主控台或追蹤視窗看到下面這幾行,每秒出現一行:
tick 1
tick 2
tick 3
tick 4
tick 5
Time's Up!