Flash 计时器
//類導(dǎo)入 import mx.controls.Button; import mx.controls.TextArea; //變量定義 var list_TextArea:TextArea; var btn_playandpause:Button; var btn_stop:Button; var timer_is_start:Boolean = false; //記錄計(jì)時(shí)器是否在工作 var txt_time; var intervalID:Number; var timeID:Number = 0; var play_time:Number = 0; //計(jì)時(shí)器運(yùn)行過程中不斷增加的總運(yùn)行時(shí)間 var timer_run_time:Number = 0; //計(jì)時(shí)器運(yùn)行的總時(shí)間 var timer_start_pos:Number = 0; //計(jì)時(shí)器觸發(fā)時(shí)SWF文件播放總時(shí)間 var timer_pause_pos:Number = 0; //計(jì)時(shí)器暫停時(shí)SWF文件播放總時(shí)間 //變量賦值 list_TextArea.text = "計(jì)時(shí)器運(yùn)行時(shí)點(diǎn)擊計(jì)時(shí)框可將當(dāng)前的時(shí)間顯示在本框中,其意義不言自明。"; txt_time.text = "00:00:00.000"; btn_playandpause.icon = "play_ico"; //把該按紐的ICON先設(shè)成播放 btn_stop.icon = "stop_ico"; //把停止按紐的ICON初使化成STOP //顯示控制 fscommand("showmenu", "false"); //不顯示菜單 fscommand("allowscale", "false"); //不改變比例 //文本框觸發(fā)事件 txt_time.onPress = function(){ //如果正在計(jì)時(shí),則向文本框輸入當(dāng)前時(shí)間 if (timer_is_start){ timeID++; get_result(); } } function get_result(){ //將取得的時(shí)間txt_time.text按排輸出 list_TextArea.text = timeID + ". " + txt_time.text + "" + list_TextArea.text; } //按紐btn_playandpause點(diǎn)擊時(shí)觸發(fā)的動(dòng)作,根據(jù)其ICON判斷計(jì)時(shí)器是否在工作并更改ICON及觸發(fā)和暫停計(jì)時(shí)器 btn_playandpause.onPress = function(){ if (this.icon == "play_ico"){ this.icon = "pause_ico"; timer_is_start = true; timer_start(); }else{ this.icon = "play_ico"; timer_is_start = false; timer_pause(); } //trace(timer_is_start); } btn_stop.onPress = function(){ //停止按紐被按下時(shí)對信息進(jìn)行復(fù)位 timer_stop(); timer_is_start = false; btn_playandpause.icon = "play_ico"; } //三個(gè)狀態(tài)觸發(fā)函數(shù) function timer_start(){ //當(dāng)計(jì)時(shí)器被啟動(dòng)時(shí)記下點(diǎn)擊瞬間SWF文件播放的總時(shí)間 timer_start_pos = getTimer(); //啟動(dòng)定時(shí)器 intervalID = setInterval(updateTimer, 50); } function timer_pause(){//暫停時(shí)記下點(diǎn)擊瞬間SWF文件播放的總時(shí)間 timer_pause_pos = getTimer(); //取得計(jì)時(shí)器總運(yùn)行時(shí)間,因?yàn)榭赡艹霈F(xiàn)多次暫停,這是一個(gè)累計(jì)值 //“timer_pause_pos - timer_start_pos”是計(jì)時(shí)器單次運(yùn)行時(shí)間,與前次運(yùn)行時(shí)間相加就是總運(yùn)行時(shí)間 timer_run_time = timer_run_time + timer_pause_pos - timer_start_pos; clearInterval( intervalID ); } function timer_stop(){clearInterval( intervalID ); txt_time.text = "00:00:00.000"; list_TextArea.text = ""; timeID = 0; timer_run_time = timer_pause_pos = timer_start_pos = 0; } //結(jié)果輸出函數(shù),這個(gè)函數(shù)通過定時(shí)器不斷調(diào)用,用于即時(shí)更新計(jì)時(shí)器的時(shí)間顯示 function updateTimer():Void{ //總的運(yùn)行時(shí)間加上當(dāng)前SWF文件運(yùn)行時(shí)間與啟動(dòng)計(jì)時(shí)器時(shí)的SWF文件運(yùn)行時(shí)間之差就是不斷增加的總運(yùn)行時(shí)間 play_time = timer_run_time + getTimer() - timer_start_pos; //將計(jì)時(shí)器不斷增加的總運(yùn)行時(shí)間格式化后輸出 txt_time.text = format_timer(play_time); } //數(shù)據(jù)格式化函數(shù) function format_timer(num:Number){ var H:String; var M:String; var S:String; var mS:String; var T:String; H = M = S = "00"; mS = "000"; //格式化時(shí),因?yàn)橐话阌貌坏叫r(shí),所以沒寫代碼,做個(gè)樣子,呵呵,有興趣的朋友請自己加上 //格式化分 var tmpM1 = Math.floor(num/60000); var tmpM2 = tmpM1-60*Math.floor(tmpM1/60);//使tmpM2在0-59之間 if (tmpM1%60==0) M = "00"; if (tmpM2<10){ M = "0" + String(tmpM2); }else{ M = String(tmpM2); } //格式化秒 var tmpS1 = Math.floor(num/1000); var tmpS2 = tmpS1-60*Math.floor(tmpS1/60); if (tmpS1%60==0) S = "00"; if (tmpS2<10){S = "0" + String(tmpS2); }else{ S = String(tmpS2); } //格式化毫秒 var tmpmS = Math.floor(num%1000); if (tmpmS<10) mS = "00" + String(tmpmS); if (tmpmS<100 && tmpmS>=10) mS = "0" + String(tmpmS); if (tmpmS<1000 && tmpmS>=100) mS = String(tmpmS); //字串連接 T = H +":"+M +":"+ S +"."+ mS; return T; }
總結(jié)
- 上一篇: ios 高德地图加载瓦片地图_iOS高德
- 下一篇: 架构之美–开放环境下的网络架构