您好我发现这个定时器计数器非常有用的代码,但它在我播放文件时启动。我需要的是一种将其更改为MouseEvent.CLICK的方法,以便在用户按下按钮时启动,并在用户按下另一个按钮时停止。这可以吗?
import flash.utils.Timer;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.globalization.DateTimeFormatter;
var timer:Timer = new Timer(100);
timer.start();
timer.addEventListener(TimerEvent.TIMER, timerTickHandler);
var timerCount:int = 0;
function timerTickHandler(Event:TimerEvent):void
{
timerCount += 100;
toTimeCode(timerCount);
}
function toTimeCode(milliseconds:int) : void {
//create a date object using the elapsed milliseconds
var time:Date = new Date(milliseconds);
//define minutes/seconds/mseconds
var hours:String = String(time.hours);
var minutes:String = String(time.minutes);
var seconds:String = String(time.seconds);
var miliseconds:String = String(Math.round(time.milliseconds)/100);
//add zero if neccecary, for example: 2:3.5 becomes 02:03.5
hours = (hours.length != 2) ? '0'+hours : hours;
minutes = (minutes.length != 2) ? '0'+minutes : minutes;
seconds = (seconds.length != 2) ? '0'+seconds : seconds;
//display elapsed time on in a textfield on stage
timer_txt.text = hours + ":" + minutes + ":" + seconds+"." + miliseconds;
}
答案 0 :(得分:0)
最简单的方法是使用timer.stop()
和timer.start()
。这不是完全准确的,因为调用stop()
和start()
基本上会重新启动当前延迟(100ms),但如果它足够好那么它应该可以工作。
另请注意,定时器代码不是完全准确的,因为Timer
事件会根据帧速率和脚本执行时间以轻微的偏移量进行调度。要获得准确的计时器,您需要轮询getTimer()
,但暂停和恢复会变得有点复杂。