Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > 使用日期與時間 > 控制時間間隔 | |||
當您使用 Adobe Flash CS3 Professional 開發應用程式時,可以存取時間軸,這會為應用程式提供穩定且以影格為單位的進度。但是,在完全使用 ActionScript 的專案中,就必須依賴其它時間機制。
在某些程式語言中,您必須使用迴圈陳述式 (如 for 或 do..while) 來自行設計計時機制。
迴圈陳述式的執行速度一般會視本機電腦而定,因此應用程式在某些電腦上的執行速度較快,某些則較慢。如果應用程式需要一致的時間間隔,您就必須將其與實際月曆或時鐘的時間繫結。許多應用程式,例如遊戲、動畫和即時控制器都需要規律、以時間驅動而且在每一部機器上都一致的計時機制。
ActionScript 3.0 的 Timer 類別即是強大的解決方案。使用 ActionScript 3.0 事件模型,每當達到指定的時間間隔,Timer 類別就會傳送計時器事件。
在 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()
{
// 建立新的五秒 Timer
var minuteTimer:Timer = new Timer(1000, 5);
// 指定間隔和完成事件的偵聽程式
minuteTimer.addEventListener(TimerEvent.TIMER, onTick);
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
// 啟動計時器
minuteTimer.start();
}
public function onTick(event:TimerEvent):void
{
// 顯示目前的計時計數
// 這個事件的目標是 Timer 實體本身。
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!
ActionScript 3.0 包含幾個計時函數,這些計時函數和 ActionScript 2.0 所提供的類似。這些函數在 Flash.utils 套件中是以套件層級的函數提供,其運作方式和在 ActionScript 2.0 中完全相同。
|
功能 |
說明 |
|---|---|
|
|
取消指定的 |
|
|
取消指定的 |
|
|
傳回從初始化 Adobe Flash Player 以後所經過的毫秒數。 |
|
|
在指定的間隔 (以毫秒為單位) 執行函數。 |
|
|
在指定的延遲時間 (以毫秒為單位) 後執行指定的函數。 |
ActionScript 3.0 保留這些函數以提供舊版相容性。Adobe 不建議您在新的 ActionScript 3.0 應用程式中使用這些函數。一般來說,在應用程式中使用 Timer 類別會較容易和有效率。
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000074.html