سؤال

أقوم بإنشاء اختبار وأحتاج إلى حساب إجمالي الوقت المستغرق لإجراء الاختبار.وأحتاج إلى عرض الوقت المستغرق في HH::MM::SS..هل هناك أي مؤشرات؟

هل كانت مفيدة؟

المحلول

يقوم الدالة 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);

نصائح أخرى

أبعث هذا السؤال لأقول إن كلا من براين وميكا مخطئان.يمنحك إنشاء تاريخ جديد () الوقت وفقًا لساعة الكمبيوتر.كل ما على أي شخص فعله هو إعادة ساعته عدة دقائق إلى الوراء، وهذا من شأنه أن يتسبب في إرجاع مؤقت الاختبار عدة دقائق أيضًا.أو ما هو أسوأ من ذلك، يمكنهم إعادة ساعتهم إلى وقت سابق لبدء الاختبار، وسيعتقد تطبيقك أنهم أمضوا قدرًا سلبيًا من الوقت في إجراء الاختبار.س.س

الحل هو استخدام 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);

املأ بالصفر عندما يكون الرقم أقل من 10 (شكرًا براين)

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();
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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top