计算闪光灯的经过时间

时间:2008-09-18 16:49:15

标签: time elapsed

我正在构建一个测验,我需要计算完成测验的总时间。 我需要显示HH :: MM :: SS..any指针所用的时间?

4 个答案:

答案 0 :(得分:4)

new Date()。time以毫秒为单位返回时间。

var nStart:Number = new Date().time;

// Some time passes

var nMillisElapsed:Number = new Date().time - nStart;

var strTime:String = Math.floor(nMillisElapsed / (1000 * 60 * 60)) + "::" + 
   (Math.floor(nMillisElapsed / (1000 * 60)) % 60) + "::" + 
   (Math.floor(nMillisElapsed / (1000)) % 60);

答案 1 :(得分:4)

我复活了这个问题,说Brian和云母都错了。创建一个新的Date()可根据计算机的时钟给出时间。所有人要做的就是将他们的时钟设置为几分钟,这将导致测验计时器返回几分钟。或者更糟糕的是,他们可以将他们的时钟设置回到他们开始测验之前的时间,并且您的应用程序会认为他们花了不少时间参加测验。 o.O

解决方案是使用flash.utils.getTimer()。无论计算机的时钟是什么,它都会返回自swf开始播放以来的毫秒数。

以下是一个例子:

var startTime:Number = getTimer();

// then after some time passes:

var elapsedMilliseconds:Number = getTimer() - startTime;

然后您可以使用Brian的代码格式化显示时间:

var strTime:String = Math.floor(elapsedMilliseconds / (1000 * 60 * 60)) + "::" + 
(Math.floor(elapsedMilliseconds / (1000 * 60)) % 60) + "::" + 
(Math.floor(elapsedMilliseconds / (1000)) % 60);

答案 2 :(得分:1)

当数字小于10时填写零(感谢brian)

var now:Date; //
var startDate:Date;
var startTime:Number; 
// initialize timer and start it
function initTimer():void{
    startDate = new Date();
    startTime = startDate.getTime();
    //
    var timer:Timer = new Timer(1000,0); // set a new break
        timer.addEventListener(TimerEvent.TIMER, onTimer); // add timer listener
    //
    function onTimer():void{
        now=new Date();
        var nowTime:Number = now.getTime();
        var diff:Number = nowTime-startTime;
        var strTime:String = Math.floor(diff / (1000 * 60 * 60)) + ":" + 
                            zeroFill(Math.floor(diff / (1000 * 60)) % 60) + ":" + 
                            zeroFill(Math.floor(diff / (1000)) % 60);
        // display where you want
        trace('time elapsed : ' + strTime);
    }
    // fill with zero when number is less than 10
    function zeroFill(myNumber:Number):String{
        var zeroFilledNumber:String=myNumber.toString();
        if(myNumber<10){
            zeroFilledNumber = '0'+zeroFilledNumber;
        }
        return zeroFilledNumber;
    }

    // start TIMER
    timer.start();

}
initTimer();

答案 3 :(得分:0)

var countdown:Timer = new Timer(1000);
countdown.addEventListener(TimerEvent.TIMER, timerHandler);
countdown.start();

function timerHandler(e:TimerEvent):void
{           
    var minute = Math.floor(countdown.currentCount /  60);
    if(minute < 10)
        minute = '0'+minute;

    var second = countdown.currentCount % 60;
    if(second < 10)
        second = '0'+second;


    var timeElapsed = minute +':'+second;
    trace(timeElapsed);
}