萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 影像處理 >> Flash 教學

Flash AS3 實時時鐘制作:Date 類與 Timer 事件驅動完整實現

效果預覽

AS3 時間日期核心 API

Date 類

var now:Date = new Date();
now.fullYear      // 年 (四位)
now.month + 1     // 月 (0-11 需 +1)
now.date          // 日 (1-31)
now.day           // 星期 (0-6, 0=周日)
now.hours         // 時 (0-23)
now.minutes       // 分
now.seconds       // 秒

Timer 類 — 精確間隔執行

var timer:Timer = new Timer(1000, 5); // 1000ms 間隔,重複 5 次
timer.addEventListener(TimerEvent.TIMER, handler);
timer.start();

function handler(e:TimerEvent):void { trace("tick"); }
  • 不指定重複次數 → 無限循環。
  • 事件參數 `TimerEvent` 可獲取 `target.currentCount` 等信息。

時鐘完整實現代碼

// 界面準備:
// 秒針 mz_mc、分針 fz_mc、時針 sz_mc (注冊點底部置中)
// 動態文本:y_txt(年)、m_txt(月)、d_txt(日)、w_txt(星期)

var clockTimer:Timer = new Timer(1000); // 1 秒觸發
clockTimer.addEventListener(TimerEvent.TIMER, updateClock);
clockTimer.start();

function updateClock(e:TimerEvent):void {
    var d:Date = new Date();
    
    // 日期文本
    y_txt.text = d.fullYear.toString();
    m_txt.text = (d.month + 1).toString();
    d_txt.text = d.date.toString();
    var weeks:Array = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
    w_txt.text = weeks[d.day];
    
    // 12 小時制換算
    var h:int = d.hours > 12 ? d.hours - 12 : d.hours;
    var m:int = d.minutes;
    var s:int = d.seconds;
    
    // 指針旋轉角度計算
    // 秒針:每秒 6°
    mz_mc.rotation = s * 6;
    // 分針:每分 6° + 秒針帶動 0.1°/秒 (6/60)
    fz_mc.rotation = m * 6 + s / 10;
    // 時針:每時 30° + 分針帶動 0.5°/分 (30/60)
    sz_mc.rotation = h * 30 + m / 2;
}

關鍵點解析

  1. 注冊點置底部中心:指針旋轉樞紐在底部,視覺正確。
  2. 角度公式:
    - 秒針:`seconds × 6°` (360°/60)。
    - 分針:`minutes × 6° + seconds × 0.1°` (平滑跟隨秒針)。
    - 時針:`hours12 × 30° + minutes × 0.5°` (平滑跟隨分針)。
  3. Timer 精度:1000ms 足夠,若需更平滑可用 `Event.ENTER_FRAME` 但須自行計時累加。
  4. 日期數組:星期映射本地化字符串。

進階擴展

  • 添加毫秒針:`ms * 3.6°` (需 `Timer(10)` 或 `ENTER_FRAME`)。
  • 數字時鐘同步顯示:`txt.text = d.toLocaleTimeString()`。
  • 鬧鐘/定時器功能:比較 `Date` 觸發事件。
  • 時區轉換:`Date` 內建 `timezoneOffset`,配合 UTC 方法處理多時區。

此例綜合運用 `Date` 讀取、`Timer` 事件驅動、幾何旋轉數學、UI 綁定,是 AS3 事件驅動編程的經典入門實戰。

copyright © 萬盛學電腦網 all rights reserved