定时器为as3初始值

时间:2014-07-24 15:37:06

标签: actionscript-3 flash

我有一个计时器在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;

}

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。我将分享其中的两个。

  1. 将日期对象初始化为开始时间:(在计时器开始计时之前)

    var time:Date = new Date();
    time.setHours(7, 30);
    

    然后将你的毫秒追加到每个定时器间隔的时间:

    time.time += milliseconds;
    

    如果你出于某种原因需要停止时钟,这将是一个很好的方法。

  2. 如果您不需要停止时钟(并且想要一个准确的时钟),您可以执行以下操作:

     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;