//类导入 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; //记录计时器是否在工作 var txt_time; var intervalID:Number; var timeID:Number = 0; var play_time:Number = 0; //计时器运行过程中不断增加的总运行时间 var timer_run_time:Number = 0; //计时器运行的总时间 var timer_start_pos:Number = 0; //计时器触发时SWF文件播放总时间 var timer_pause_pos:Number = 0; //计时器暂停时SWF文件播放总时间 //变量赋值 list_TextArea.text = "计时器运行时点击计时框可将当前的时间显示在本框中,其意义不言自明。"; txt_time.text = "00:00:00.000"; btn_playandpause.icon = "play_ico"; //把该按纽的ICON先设成播放 btn_stop.icon = "stop_ico"; //把停止按纽的ICON初使化成STOP //显示控制 fscommand("showmenu", "false"); //不显示菜单 fscommand("allowscale", "false"); //不改变比例 //文本框触发事件 txt_time.onPress = function(){ //如果正在计时,则向文本框输入当前时间 if (timer_is_start){ timeID++; get_result(); } } function get_result(){ //将取得的时间txt_time.text按排输出 list_TextArea.text = timeID + ". " + txt_time.text + "" + list_TextArea.text; } //按纽btn_playandpause点击时触发的动作,根据其ICON判断计时器是否在工作并更改ICON及触发和暂停计时器 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(){ //停止按纽被按下时对信息进行复位 timer_stop(); timer_is_start = false; btn_playandpause.icon = "play_ico"; } //三个状态触发函数 function timer_start(){ //当计时器被启动时记下点击瞬间SWF文件播放的总时间 timer_start_pos = getTimer(); //启动定时器 intervalID = setInterval(updateTimer, 50); } function timer_pause(){ //暂停时记下点击瞬间SWF文件播放的总时间 timer_pause_pos = getTimer(); //取得计时器总运行时间,因为可能出现多次暂停,这是一个累计值 //“timer_pause_pos - timer_start_pos”是计时器单次运行时间,与前次运行时间相加就是总运行时间 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; } //结果输出函数,这个函数通过定时器不断调用,用于即时更新计时器的时间显示 function updateTimer():Void{ //总的运行时间加上当前SWF文件运行时间与启动计时器时的SWF文件运行时间之差就是不断增加的总运行时间 play_time = timer_run_time + getTimer() - timer_start_pos; //将计时器不断增加的总运行时间格式化后输出 txt_time.text = format_timer(play_time); } //数据格式化函数 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"; //格式化时,因为一般用不到小时,所以没写代码,做个样子,呵呵,有兴趣的朋友请自己加上 //格式化分 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; }