3

クイズを作成していて、クイズにかかる合計時間を計算する必要があります。HH::MM::SS..任意のポインターでかかった時間を表示する必要がありますか?

4

4 に答える 4

4

ブライアンとマイカの両方が間違っていると言うために、この質問を復活させます。新しい Date() を作成すると、コンピューターの時計に基づいた時間が得られます。誰かがしなければならないことは、時計を数分戻すだけで、クイズのタイマーも数分戻ることになります。さらに悪いことに、クイズを開始する前の時間に時計を戻してしまう可能性があり、アプリはクイズに費やした時間が負の時間であると認識してしまいます。oO

解決策は、flash.utils.getTimer() を使用することです。コンピュータのクロックが何を言っているかに関係なく、swf が再生を開始してからのミリ秒数を返します。

次に例を示します。

var startTime:Number = getTimer();

// then after some time passes:

var elapsedMilliseconds:Number = getTimer() - startTime;

次に、ブライアンのコードを使用して、表示用の時間をフォーマットできます。

var strTime:String = Math.floor(elapsedMilliseconds / (1000 * 60 * 60)) + "::" + 
(Math.floor(elapsedMilliseconds / (1000 * 60)) % 60) + "::" + 
(Math.floor(elapsedMilliseconds / (1000)) % 60);
于 2013-04-09T08:10:50.867 に答える
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);
于 2008-09-18T16:54:53.857 に答える
1

数値が 10 未満の場合は 0 で埋める (Thanks 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();
于 2010-12-16T09:01:28.693 に答える
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);
}
于 2013-11-17T17:22:56.657 に答える