我有一个计时器在as3中计数。我正在尝试模拟从07:30到12:00计时的时钟。计数的功能正在发挥作用。如何设置初始起始值和停止值?
这是我的代码:
var timer:Timer = new Timer(100, 50);
timer.start();
timer.addEventListener(TimerEvent.TIMER, timerTickHandler);
var timerCount:int = 10;
function timerTickHandler(Event:TimerEvent):void
{
timerCount += 10000;
toTimeCode(timerCount);
}
function toTimeCode(milliseconds:int) : void
{
//creating a date object using the elapsed milliseconds
var time:Date = new Date(milliseconds);
//define minutes/seconds/mseconds
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
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 = minutes + ":" + seconds;
}
答案 0 :(得分:2)
有几种方法可以做到这一点。我将分享其中的两个。
将日期对象初始化为开始时间:(在计时器开始计时之前)
var time:Date = new Date();
time.setHours(7, 30);
然后将你的毫秒追加到每个定时器间隔的时间:
time.time += milliseconds;
如果你出于某种原因需要停止时钟,这将是一个很好的方法。
如果您不需要停止时钟(并且想要一个准确的时钟),您可以执行以下操作:
var time:Date = new Date();
time.setHours(7,30);
var offset:Number = flash.utils.getTimer(); //this gets the amount of milliseconds elapsed since the application started;
然后在你的间隔方法中:
time.time += flash.utils.getTimer() - offset;