2008年10月26日 19:31

【練習】使用Timer類別 - 實作簡易計時鐘

  Timer類別是Flash內建的計時工具,可以設定至毫秒的時間間隔,接下來只要啟動之,時間到時就會引發TIMER事件,相當地簡單易用。因為每次影格的執行時間,不一定那麼的精準,有時單一影格計算量較多時,Flash會給予緩衝時間,就會發生延遲。因此在某些時間條件較嚴苛的應用裡,如:時鐘、即時連線、遊戲計時等,以計時器的TimerEvent.TIMER事件取代影格進入的Event.ENTER_FRAME事件更加適當,經過簡單的換算即可,例如:20 fps(每秒影格數)等於每1000/20=50亳秒執行一次。以下將練習一個基本的應用-計秒時鐘,順便記錄設計的過程,以及Timer的一些用法。

基礎:使用Timer的基本程式碼如下:
var myTimer:Timer=new Timer(2000, 3);//每2秒觸發,共執行3次
myTimer.start(); //開始計時, 反之使用stop()
//觸發事件發生時,執行someEventFunc函式
myTimer.addEventListener(TimerEvent.TIMER, someEventFunc);
練習:範例檔製作順序
  1. 在舞台上以圓形、直線工具,將時間盤面、指針畫好,轉成MovieClip。
  2. 調整指針的中心位置,中心需位於指針的一端,因旋轉時會繞著中心點。
  3. 以多邊形和距形工具製作播放控制按鈕,轉成Button。
  4. 在屬性欄給予指針和按鈕名稱,以在ActionScript中呼叫使用。
  5. 編輯程式碼,加上各事件的處理動作,詳見原始檔
其中一行程式碼如下,running為Timer的屬性,可得知目前是處於start或stop狀態。
if (myTimer.running) // 取得目前Timer狀態
另外,除了 TimerEvent.TIMER 事件外,另有一 TimerEvent.TIMER_COMPLETE 表示所有次數的計時已結束。

[原始檔下載]


  • esabear 發表於樂多回應(2)引用(0)Flash筆記編輯本文
    樂多分類:網路/3C │昨日人次:3 │累計人次:550 │標籤:練習,Timer,flash
    Ads by Roodo! 

    引用URL

    http://cgi.blog.roodo.com/trackback/7444535

    回應文章

    您好~很感謝您的經驗分享~
    我想請問~如果要偵測電腦的時間來控制幾點播放A影片`幾點播放B影片的話 action script2該怎麼寫呢>
    | 檢舉 | Posted by rion at 2009年05月1日 00:27

    To rion:
    AS2我不太熟,不過Date類別是一樣的:
    var date:Date = new Date();
    trace (date.getHours());//取得"時"
    trace (date.getMinutes());//取得"分"
    可以在onEnterFrame裡判斷(效能較差)
    或者計算出目標時間與目前的時間差, 然後用Timer來引發
    ※Flash函式只能取得本機時間
    | 檢舉 | Posted by 熊 at 2009年05月1日 16:42