使用ActionScript 3.0的Timer類別製作計時器

使用ActionScript 3.0的Timer類別製作計時器
文∕趙英傑

本文旨在補充《碼上就會:Flash CS3動畫設計寶典》書本第十二章的迴圈敘述,說明定時器程式的寫法。請按此連結下載本文範例檔(請用Flash CS3軟體開啟)。

計時器是許多遊戲動畫不可或缺的元素,它可以顯示玩家花了多少時間過關,或者倒數經過的時間。在ActionScript 2.0中,計時器通常採用getTimer()函數撰寫而成,本單元介紹的計時器則採用ActionScript 3.0的Timer類別製作。Timer類別物件的基本語法如下:

ActionScript 3.0的Timer類別語法

每當指定的「間隔毫秒」時間到時,計時器物件就會發出TimerEvent.TIMER事件。「觸發次數」是選擇性參數,若不填寫,則計時器物件將每隔一段「間隔毫秒」發出事件。

例如,底下的程式將在每隔500毫秒(亦即,0.5秒),在輸出面版呈現“你好!”,重複三次:

基本的計時器

假設讀者想製作一個如下圖外觀的計時器,文字欄位右邊的按鈕是一個包含「啟動」與「暫停」按鈕的影片片段,其實體名稱為“toggle_mc”。當用戶按下「啟動」鈕後,計時器將開始計時,而「啟動」鈕將切換成「暫停」鈕。

計時器的舞台

雙按舞台上的「控制鈕」,進入它的時間軸,即可看見它的時間軸架構,其中,第一格影格的標籤名稱叫做“啟動”,第二格則叫做“暫停”。

「控制鈕」時間軸架構

請在此影片主舞台actions圖層的第一格關鍵影格,建立一個每1000毫秒(即:1秒鐘)觸發一次的Timer物件,以及計算經過秒數的變數counter:

接著撰寫計時器物件timer的事件偵聽程式,每過了1000毫秒,onTimer函數將被執行,並將累加後的counter值顯示在time_txt欄位。

Timer計時器物件在執行start()方法之後才會啟動;停止計時的方法則是執行其stop()方法。請繼續輸入底下toggle_mc的滑鼠事件程式:

倒數計時

倒數計時程式的邏輯正好和上面的程式相反:先設定預定時間(秒數),每隔一秒鐘減去1,直到時間值等於0為止。本文附件的timer_2.fla原始檔,包含三個關鍵影格畫面,第一格影格畫面包含一個實體名稱為“start_btn”的倒數計時啟動鈕,以及輸入秒數的“time_txt”欄位:

初始變數與按鈕的事件處理程式如下,當用戶輸入倒數時間後,按下「啟動(start_btn)」鈕,程式將在counter變數存入倒數時間,並啟動計時器:

第三格的影格標籤名稱為“end”,用於顯示倒數結束畫面:

倒數計時的主體程式碼如下:

4 thoughts on “使用ActionScript 3.0的Timer類別製作計時器

  1. 你好,老师,我想问一下,两个TIMER同时运行并都读写同一个数组,应该会存在读写冲突,该怎么解决这个问题?谢谢

  2. 在处理SOCKET时,因为发的包太快SWF处理速度来不及就容易缓冲区满了,我想的处理办法是SOCKET读到数据就PUSH到一个数组,再开一个TIMER来专门处理数据,这样就存在读写冲突了

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *