12-3 計時

真正在Flash遊戲裡使用最多的計時函數要算getTimer函數。不論倒數計時或是記錄玩家使用時間,getTimer都可以很容易的做到。

一、getTimer函數

語法:getTimer()

功能:取得影片開始播放到現在的毫秒數值。

 

 


 利用getTimer函數製作可計時、暫時及停止的簡易馬錶。

執行【ch12/簡易馬錶.swf】檔案

1. 剛開始時間為000秒。

 

 

 

 

 

 

 

 

 


2. 按『計時』鈕,開始計時,按『暫停』鈕,暫停計時。

 

 

 

 

 

 

 

 

 


3. 再按『計時』鈕,時間累加。

4. 按『停止』鈕,時間回到000秒。

載入【ch12/簡易馬錶.fla】檔案。

 

 

 

 

 

 

 

 

 

 

 

 

【計時文字】圖層:

1個動態文字欄位timeUsed_txt,顯示計時數據。

【按鈕】圖層:

3個按鈕,start_btn『計時』按鈕、pause_btn『暫停』按鈕、stop_btn『停止』按鈕。

action】圖層:

影格1(初值)程式

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

txtTimeUsed = "00:00:00";

timer_on = false;

total_time = 0;

micro_seconds = 0;

stop();

function Timer() {

    if ( timer_on ) {

        time_base = getTimer();

        timer_on = false;

    }

    micro_seconds=getTimer()-time_base+total_time;

    total_seconds = Math.floor(micro_seconds/1000);

    min = Math.floor(total_seconds/60);

    hours = Math.floor(min/60);

    minutes = Math.floor (min%60);

    seconds = Math.floor (total_seconds%60);

    if ( hours < 10 ) {

        hours = "0" + hours;

    }

    if ( minutes < 10 ) {

        minutes = "0" + minutes;

    }

    if ( seconds < 10 ) {

        seconds = "0" + seconds;

    }

    txtTimeUsed =hours+":"+minutes+":"+seconds;

}

解說:

0104:設定四個變數的初值。txtTimeUsed為動態文字,顯示計時數據;timer_on記錄馬錶是否剛按下的狀態;total_time記錄暫停時間前所使用的時間;micro_seconds記錄馬錶按下後迄今所使用的時間。

05:影片停止動作。(等待按下按鈕)

0627:自訂的計時函數。

0710:用timer_on變數判斷馬錶如果是剛按下的狀態,則time_base變數先存入影片開始播放迄今的毫秒數值,然後timer_on重歸false

11micro_seconds馬錶按下迄今所使用的時間,等於影片開始播放迄今的毫秒數值,減去time_base(即上一次影片開始播放迄今的毫秒數值),加上total_time(上一次暫停時間前所使用的時間)

12total_seconds micro_seconds除以1000,也就是毫秒換算為秒。小數部分捨去。

13:由total_seconds除以60計算全部分鐘數。

1416:分別計算出時hours、分minutes、秒seconds的數據。

1719:如果時數小於10則補零。

2022:如果分鐘數小於10則補零。

2325:如果秒數小於10則補零。

26:動態文字txtTimeUsed,顯示計時數據。

影格2(計時中)程式

01

Timer();

解說:

01:執行自訂函數Timer,計算時間。

影格3程式

01

gotoAndPlay("計時中");

解說:

01:與影格2形成迴圈不斷更新計時數據。

start_btn『計時』按鈕程式

01

02

03

04

on (release) {

     timer_on = true;

     gotoAndPlay(2);

}

解說:

0204 timer_on變為true,且主時間軸跳至第2格播放,也就是開始或繼續計時。

pause_btn『暫停』按鈕程式

01

02

03

04

on (release) {

      total_time = micro_seconds;

      stop();

}

解說:

02:將micro_seconds馬錶按下後迄今所使用的時間存入累計使用的時間。(也就是如果再按『計時』按鈕時可以繼續累計時間)

03:主時間軸影格23的迴圈停止不動。

 

stop_btn『停止』按鈕程式

01

02

03

on (release) {

      gotoAndStop(1);

}

解說:

02:停止計時只要主時間軸跳回第1格初值影格即可。

二、setMask方法

語法:name1_mc.setMask(name2_mc);

功能:name2_mc影片片段遮蓋name1_mc影片片段。

 

 


  藍色圓球由右往左水平移動遮蓋汽車,有探燈效果。

 

執行【ch12/setMask.swf】檔案

 

 

 

 

 

 

 

 

 


載入【ch12/setMask.fla】檔案。

 

 

 

 

 

 

 

 

 

 

 

action】圖層

影格1程式

01 if(blueCircle_mc._x>=100){  

02    blueCircle_mc._x--;

03 }

04 car_mc.setMask(blueCircle_mc);

解說

0103:藍色圓球往左移動,圓球移動動水平位置100處停下來。

04:藍色圓遮蓋汽車

 

影格2程式

01

gotoAndPlay(1);

解說

與影格1構成影格迴圈。