你如何覆盖这个?
我们也只是在可以正确计算时间的脚本中使用Date类。
- 创建一个新的 AS3 文档
- 添加 3 个名为 minText、secText、MilText 的文本框和一个名为 start_btn 的按钮
- 在第一帧添加此代码:
var stt:int;// 我们使用这个变量来跟踪开始时间作为时间戳
var myTimer:Timer = new Timer(1); // 这是我们的计时器
var starttime:Date; // pretty obvious
var actualtime:Date; // pretty obvious
myTimer.addEventListener(TimerEvent.TIMER, stopWatch); // we start counting with this counter
start_btn.addEventListener(MouseEvent.CLICK, startClock); // add a button listener to start the timer
function startClock(event:MouseEvent):void
{
starttime = new Date(); // we get the moment of start
stt = int(starttime.valueOf().toString()); // convert this into a timestamp
myTimer.start(); // start the timer (actually counter)
}
function stopWatch(event:TimerEvent):void
{
actualtime = new Date(); // we get this particular moment
var att:int = int(actualtime.valueOf().toString()); // we convert it to a timestamp
// here is the magic
var sec:int = (Math.floor((att-stt)/1000)%100)%60; // we compute an absolute difference in seconds
var min:int = (Math.floor((att-stt)/1000)/60)%10; // we compute an absolute difference in minutes
var ms:int = (att-stt)%1000; // we compute an absolute difference in milliseconds
//we share the result on the screen
minText.text = String(min);
secText.text = String(sec);
milText.text = String(ms);
}
为什么需要时间戳而不使用 Date 类的功能?
因为如果你想计算两个事件之间的差异,你可能会使用这个:
endEvent.seconds - startEvent.seconds
如果您的开始事件发生在第 57 秒并且结束事件发生在第 17 秒,这是非常错误的,您将得到 -40 秒而不是 20 秒,依此类推。