蔣維
摘要:該文介紹了在Flash中如何利用動(dòng)作腳本實(shí)現(xiàn)倒計(jì)時(shí)的幾種方法。
關(guān)鍵詞:Flash;倒計(jì)時(shí);動(dòng)作腳本
在Flash的交互設(shè)計(jì)中,很多時(shí)候都需要進(jìn)行時(shí)間控制,這里所說的時(shí)間控制是指持續(xù)時(shí)間,即結(jié)束時(shí)間減去開始時(shí)間得到的時(shí)間差.在Flash時(shí)間函數(shù)中沒有日期、時(shí)間的加減功能,對于需要用到“倒計(jì)時(shí)”時(shí)沒法直接求兩時(shí)間差,需要借助于其他函數(shù)來完成.本文共介紹了三種用動(dòng)作腳本制作倒計(jì)時(shí)器的方法。
1程序的設(shè)計(jì)與實(shí)現(xiàn)
1.1程序的設(shè)計(jì)
程序設(shè)計(jì)的基本思想是整個(gè)倒計(jì)時(shí)過程中剩余時(shí)間是以秒為單位進(jìn)行倒計(jì)時(shí),而倒計(jì)時(shí)剩余時(shí)間的顯示則是由時(shí)、分、秒三部分組成,我們需要把倒計(jì)時(shí)剩余總秒數(shù)轉(zhuǎn)換成相對應(yīng)的時(shí)、分、秒.如一個(gè)3位整數(shù)456,百位4:INT(456/100),十位5:INT((456%100)/10),個(gè)位6:456%10,F(xiàn)lash中是用相同的方法提取時(shí)、分、秒,只是時(shí)間單位進(jìn)制是60。
1.2程序的實(shí)現(xiàn)
(1)方法一的實(shí)現(xiàn)過程
此方法是在系統(tǒng)的時(shí)間軸上截取一個(gè)倒計(jì)時(shí)起始時(shí)間timestart,再截取一個(gè)倒計(jì)時(shí)終點(diǎn)時(shí)間timeend,seconds用于記錄當(dāng)前系統(tǒng)的最新更新時(shí)間剛開始seconds的值與timestart的值相等,隨著系統(tǒng)時(shí)間值一秒一秒增加,seconds中的值也在逐漸加1變化,timeend-seconds便是倒計(jì)時(shí)剩余時(shí)間.各時(shí)間點(diǎn)的關(guān)系如下圖1。
選中第一幀關(guān)鍵幀,打開動(dòng)作面板輸入以下代碼:
var time;
time=new TextField();//生成文本域
time.defauhTextFormat=new TextFormat(黑體”,20,Oxff0000)設(shè)置文本格式
time.x=200;time.y=200;//設(shè)置文本在舞臺(tái)上的位置
vat startt:Date=new Date();//截取系統(tǒng)時(shí)間軸上某點(diǎn)作為倒計(jì)時(shí)起始時(shí)間
此方法是在系統(tǒng)時(shí)間軸上截取倒計(jì)時(shí)時(shí)間段,程序不能保證在任意時(shí)間點(diǎn)上都能正常運(yùn)行.以系統(tǒng)時(shí)間是24小時(shí)制為例,倒計(jì)時(shí)取得的計(jì)時(shí)起點(diǎn)和終點(diǎn)不能是橫跨在凌晨00:00兩邊的時(shí)間點(diǎn),可以在seconds取得新值前加一條判斷語句,if(nowt.hours (2)方法二的實(shí)現(xiàn)過程 此方法是在getTimer()函數(shù)時(shí)間軸上截取時(shí)間段.getTimer()函數(shù)是獲取從Flash開始運(yùn)行到現(xiàn)在所經(jīng)過的時(shí)間值,以毫秒為單位,getTimer()中的值會(huì)隨著程序運(yùn)行時(shí)間的增加而增加.方法二不是在系統(tǒng)時(shí)間軸上截取時(shí)間段,因此沒有方法一的 此方法中需要用Math.ceil()函數(shù)取得倒計(jì)時(shí)剩余總時(shí)間,否則整個(gè)倒計(jì)時(shí)會(huì)少計(jì)時(shí)1秒. (3)方法三的實(shí)現(xiàn)過程 此方法是創(chuàng)建一ClockFun()函數(shù),在ClockFun()函數(shù)中倒計(jì)時(shí)總時(shí)間逐一減少,再利用setInterval()函數(shù)每隔1000毫秒即1秒執(zhí)行一次ClockFun()函數(shù) 選中第一幀關(guān)鍵幀,打開動(dòng)作面板輸入以下代碼: 2結(jié)論 各方法中可自行增加一些控制語句,使程序功能更加完善,如方法一中用if(seconds>timeend)time.text=”時(shí)間到!”來控制倒計(jì)時(shí)結(jié)束時(shí)顯示的內(nèi)容,等等。