套件 | flash.utils |
類別 | public class Timer |
繼承 | Timer EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
start()
方法可啟動計時器。 加入 timer
事件的事件偵聽程式,以設定程式碼在計時器間隔執行。
您可以建立 Timer 物件,以便依排程在指定的間隔執行一次或重複執行程式碼。 取決於 SWF 檔的影格速率或執行階段的環境 (可用記憶體及其他因素),執行階段可能會在稍微偏移的間隔傳送事件。例如,如果 SWF 檔設定為每秒播放 10 個影格 (fps),也就是 100 毫秒的間隔,不過您的計時器設定為在 80 毫秒觸發事件,便會在接近 100 毫秒間隔時傳送事件。需要耗用記憶體的指令碼也可能使事件偏移。
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
currentCount : int [唯讀]
計時器從零啟動後觸發的總次數。 | Timer | ||
delay : Number
計時器事件之間的延遲時間 (以毫秒為單位)。 | Timer | ||
repeatCount : int
設定計時器執行的總次數。 | Timer | ||
running : Boolean [唯讀]
計時器的目前狀態。如果計時器正在執行則為 true;否則為 false。 | Timer |
方法 | 定義自 | ||
---|---|---|---|
會以指定的 delay 和 repeatCount 狀態建構新的 Timer 物件。 | Timer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
會停止計時器 (如果計時器仍在執行),並將 currentCount 屬性設定回到 0,就像是碼錶的重設按鈕一樣。 | Timer | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
會啟動計時器 (如果尚未執行)。 | Timer | ||
會停止計時器。 | Timer | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
每當 Timer 物件達到根據 Timer.delay 屬性所指定的間隔時傳送。 | Timer | |||
每當完成由 Timer.repeatCount 設定的要求數目時傳送。 | Timer |
currentCount | 屬性 |
delay | 屬性 |
delay:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
計時器事件之間的延遲時間 (以毫秒為單位)。 如果您在計時器執行時設定延遲間隔,計時器便會在相同的 repeatCount
循環重新啟動。
注意:不建議使用低於 20 毫秒的 delay
。計時器頻率限制在每秒 60 影格,也就是小於 16.6 毫秒的延遲會造成執行階段問題。
實作
public function get delay():Number
public function set delay(value:Number):void
擲回值
Error — 如果指定的延遲時間為負值或不是有限數值,便會擲回例外。
|
repeatCount | 屬性 |
repeatCount:int
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
設定計時器執行的總次數。 如果重複次數設定為 0,計時器便會不斷地繼續下去,最多高達 24.86 天,或是直到叫用 stop()
方法或是程式停止為止。如果重複次數不為零,計時器便會執行指定的次數。 如果 repeatCount
設定為等於或小於 currentCount
,計時器便會停止並不再觸發。
實作
public function get repeatCount():int
public function set repeatCount(value:int):void
running | 屬性 |
Timer | () | 建構函式 |
public function Timer(delay:Number, repeatCount:int = 0)
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會以指定的 delay
和 repeatCount
狀態建構新的 Timer 物件。
計時器不會自動啟動,您必須呼叫 start()
方法才能啟動計時器。
delay:Number — 計時器事件彼此之間的延遲時間,以毫秒為單位。不建議使用低於 20 毫秒的 delay 。計時器頻率限制在每秒 60 影格,也就是小於 16.6 毫秒的延遲會造成執行階段問題。
| |
repeatCount:int (default = 0 ) — 指定重複的次數。 如果為零,計時器會不斷地重複,最多高達 24.86 天。如果不為零,計時器會在執行指定的次數後停止。
|
擲回值
Error — 如果指定的延遲時間為負值,或是不是有限數值的話。
|
範例 ( 如何使用本範例 )
程式會建立一個 Timer 物件,在 30 秒後啟動 (延遲設定為 30000 毫秒),而且會重複 3 次,總計 90 秒 (計時器會在第三次之後停止)。
程式會為 myTimer
計時器加入 2 個事件偵聽程式。 第一個偵聽程式由 TimerEvent.TIMER
事件觸發,每次啟動計時器時都會發生。 timerHandler()
方法會變更 statusTextField
文字欄位的文字,以反映剩餘的秒數
注意:Timer 類別會遞增 currentCount
屬性中的數字,以追蹤該類別必須啟動的次數 (repeats
)。
最後一次呼叫計時器之後,會傳送 TimerEvent.TIMER_COMPLETE
事件,並呼叫 completeHandler()
方法。completeHandler()
方法會將 inputTextField
文字欄位的類型從 INPUT
變更為 DYNAMIC
,這表示使用者無法再輸入或變更文字。
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldType; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.Event; public class Timer_constructorExample extends Sprite { private var statusTextField:TextField = new TextField(); private var inputTextField:TextField = new TextField(); private var delay:uint = 30000; private var repeat:uint = 3; private var myTimer:Timer = new Timer(delay, repeat); public function Timer_constructorExample() { inputTextField.x = 10; inputTextField.y = 10; inputTextField.border = true; inputTextField.background = true; inputTextField.height = 200; inputTextField.width = 200; inputTextField.multiline = true; inputTextField.wordWrap = true; inputTextField.type = TextFieldType.INPUT; statusTextField.x = 10; statusTextField.y = 220; statusTextField.background = true; statusTextField.autoSize = TextFieldAutoSize.LEFT; myTimer.start(); statusTextField.text = "You have " + ((delay * repeat) / 1000) + " seconds to enter your response."; myTimer.addEventListener(TimerEvent.TIMER, timerHandler); myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler); addChild(inputTextField); addChild(statusTextField); } private function timerHandler(e:TimerEvent):void{ repeat--; statusTextField.text = ((delay * repeat) / 1000) + " seconds left."; } private function completeHandler(e:TimerEvent):void { statusTextField.text = "Times Up."; inputTextField.type = TextFieldType.DYNAMIC; } } }
reset | () | 方法 |
public function reset():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會停止計時器 (如果計時器仍在執行),並將 currentCount
屬性設定回 0,就像是碼表的重設按鈕一樣。 然後,在呼叫 start()
時,計時器實體便會執行指定的重複次數 (由 repeatCount
值所設定)。
相關 API 元素
start | () | 方法 |
public function start():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會啟動計時器 (如果尚未執行)。
stop | () | 方法 |
public function stop():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會停止計時器。 在 stop()
之後呼叫 start()
時,計時器實體便會執行「剩餘」的重複次數 (由 repeatCount
屬性設定)。
相關 API 元素
timer | 事件 |
flash.events.TimerEvent
屬性 TimerEvent.type =
flash.events.TimerEvent.TIMER
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
每當 Timer 物件到達根據 Timer.delay
屬性所指定的間隔時傳送。
timer
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 已經達到其間隔的 Timer 物件。 |
timerComplete | 事件 |
flash.events.TimerEvent
屬性 TimerEvent.type =
flash.events.TimerEvent.TIMER_COMPLETE
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
每當完成由 Timer.repeatCount
設定的要求數目時傳送。
timerComplete
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 已經完成其要求的 Timer 物件。 |
TimerExample
類別,以示範如何設定偵聽程式方法 timerHandler()
來偵聽是否有要傳送的新 TimerEvent。 當呼叫 start()
時,會啟動此計時器,而當過了該時間點之後,就會傳送計時器事件。
package { import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.Sprite; public class TimerExample extends Sprite { public function TimerExample() { var myTimer:Timer = new Timer(1000, 2); myTimer.addEventListener("timer", timerHandler); myTimer.start(); } public function timerHandler(event:TimerEvent):void { trace("timerHandler: " + event); } } }
Tue Jun 12 2018, 03:47 PM Z