Timer()建構函式
public function Timer(delay:Number, repeatCount:int = 0)
參數
delay:Number — 計時器事件彼此之間的延遲時間,以毫秒為單位。不建議使用低於 20 毫秒的 delay。計時器頻率限制在每秒 60 影格,也就是小於 16.6 毫秒的延遲會造成執行階段問題。
repeatCount:int (default = 0) — 指定重複的次數。 如果為零,計時器便會無限次重複。 如果不為零,計時器會在執行指定的次數後停止。
Timer物件.addEventListener(TimerEvent.TIMER, 事件處理函數)
Timer物件.start() - 會啟動計時器 (如果尚未執行)。
timerComplete事件 - 每當完成由 Timer.repeatCount 設定的要求數目時傳送。
事件物件類型: flash.events.TimerEvent
屬性 TimerEvent.type = flash.events.TimerEvent.TIMER_COMPLETE
* Timer() 建構式第 2 個參數忘了設定,仍為預設值的 0 。但因為在count()函數做startNum > 0 才遞減的控制,仍可得到正常的結果
1000123_Timer_1.swf
import flash.utils.Timer; import flash.events.MouseEvent; import flash.events.Event; //關閉start_mc的滑鼠感應 start_mc.mouseEnabled = false; //宣告startNum文int型別,儲存開始倒數的秒數 //startNum_txt欄位輸入的數值將指定給startNum var startNum:int; trace(startNum); //設定舞台上的TextField → startNum_txt的格式屬性 //這用來輸入開始倒數的秒數 startNum_txt.border = true; startNum_txt.borderColor = 0x555555; startNum_txt.background = true; startNum_txt.backgroundColor = 0xbbccff; //設定舞台上的TextField → timer_txt的格式屬性 //這用來顯示一開始的設定秒數,及倒數中的遞減數字 timer_txt.background = true; timer_txt.backgroundColor = 0x0000cc; timer_txt.text = "0"; //運算計時器顯示數字的遞減 function count(e:TimerEvent):void{ if(startNum > 0){ startNum --; } //int型別的startNum以toString()方轉成String型別 //並指定給timer_txt的text屬性,即在timer_txt欄位顯示 timer_txt.text = startNum.toString(); } //Timer物件的宣告 function startTimer(e:MouseEvent):void{ //每1000毫秒呼叫count函數一次 var myTimer:Timer = new Timer(1000, 0); myTimer.addEventListener(TimerEvent.TIMER, count); //start_mc被按下會來呼叫執行此處的startTimer()函數, //當startNum > 0,控制startNum_txt的滑鼠感應為false //並且讓Timer物件 myTimer 開始運作 if(startNum > 0){ // startNum_txt.mouseEnabled = false; //呼叫start()方法,於是Timer物件開始運作 myTimer.start(); trace(startNum); } //此處e.currentTarget參照廣播MouseEvent.CLICK事件的start_mc e.currentTarget.mouseEnabled = false; } //打開start_mc的按鈕模式 start_mc.buttonMode = true; //start_mc廣播MouseEvent.CLICK事件給startTimer偵聽函數 start_mc.addEventListener(MouseEvent.CLICK, startTimer); //startNum_txt廣播Event.CHANGE事件給updateTimerTxt偵聽函數 startNum_txt.addEventListener(Event.CHANGE, updateTimerTxt); //當startNum_txt輸入數字,即將數字存入startNum //startNum_txt被輸入的數字指定給timer_txt function updateTimerTxt(e:Event):void{ startNum = int(startNum_txt.text); timer_txt.text = startNum_txt.text; trace(startNum); //當startNum > 0 ,start_mc的滑鼠感應才生效,其餘狀態則關閉 if(startNum > 0){ start_mc.mouseEnabled = true; }else{ start_mc.mouseEnabled = false; } }
** Timer() 建構式第 2 個參數設為所輸入的開始倒數秒數 startNum
( 因為第一個參數為1000毫秒,即1秒觸發一次,startNum (秒) / 1 (次/秒) = startNum (次) )
● 此檔加了偵聽 TimerEvent.TIMER_COMPLETE 事件,當完成由 Timer.repeatCount 設定的要求數目時觸發
1000123_Timer_2.swf
import flash.utils.Timer; import flash.events.MouseEvent; import flash.events.Event; // //宣告startNum文int型別,儲存開始倒數的秒數 //startNum_txt欄位輸入的數值將指定給startNum var startNum:int; trace(startNum); // function ini():void{ //關閉start_mc的滑鼠感應 start_mc.mouseEnabled = false; //開啟sstartNum_txt 欄位的滑鼠感應 startNum_txt.mouseEnabled = true; //設定舞台上的TextField → startNum_txt的格式屬性 //這用來輸入開始倒數的秒數 startNum_txt.border = true; startNum_txt.borderColor = 0x555555; startNum_txt.background = true; startNum_txt.backgroundColor = 0xbbccff; startNum_txt.text = ""; //設定舞台上的TextField → timer_txt的格式屬性 //這用來顯示一開始的設定秒數,及倒數中的遞減數字 timer_txt.background = true; timer_txt.backgroundColor = 0x0000cc; timer_txt.text = "0"; } ini(); //運算計時器顯示數字的遞減 function count(e:TimerEvent):void{ if(startNum > 0){ startNum --; } //int型別的startNum以toString()方轉成String型別 //並指定給timer_txt的text屬性,即在timer_txt欄位顯示 timer_txt.text = startNum.toString(); } // function myTimerCom(e:TimerEvent):void{ ini(); } //Timer物件的宣告 function startTimer(e:MouseEvent):void{ //每1000毫秒呼叫count函數一次 var myTimer:Timer = new Timer(1000, startNum); myTimer.addEventListener(TimerEvent.TIMER, count); myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, myTimerCom); //start_mc被按下會來呼叫執行此處的startTimer()函數, //當startNum > 0,控制startNum_txt的滑鼠感應為false //並且讓Timer物件 myTimer 開始運作 if(startNum > 0){ // startNum_txt.mouseEnabled = false; //呼叫start()方法,於是Timer物件開始運作 myTimer.start(); trace(startNum); } //此處e.currentTarget參照廣播MouseEvent.CLICK事件的start_mc e.currentTarget.mouseEnabled = false; } //打開start_mc的按鈕模式 start_mc.buttonMode = true; //start_mc廣播MouseEvent.CLICK事件給startTimer偵聽函數 start_mc.addEventListener(MouseEvent.CLICK, startTimer); //startNum_txt廣播Event.CHANGE事件給updateTimerTxt偵聽函數 startNum_txt.addEventListener(Event.CHANGE, updateTimerTxt); //當startNum_txt輸入數字,即將數字存入startNum //startNum_txt被輸入的數字指定給timer_txt function updateTimerTxt(e:Event):void{ startNum = int(startNum_txt.text); timer_txt.text = startNum_txt.text; trace(startNum); //當startNum > 0 ,start_mc的滑鼠感應才生效,其餘狀態則關閉 if(startNum > 0){ start_mc.mouseEnabled = true; }else{ start_mc.mouseEnabled = false; } }
沒有留言:
張貼留言