Je construis un quiz et j'ai besoin de calculer le temps total nécessaire pour faire le quiz. et j'ai besoin d'afficher le temps pris dans les pointeurs HH :: MM :: SS..any?calculer le temps écoulé en flash
Répondre
new Date(): l'heure renvoie l'heure en millisecondes.
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);
Remplir avec zéro lorsque le nombre est inférieur à 10 (Merci 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();
Je ressuscite cette question de dire que Brian et le mica sont fausses. Créer une nouvelle date() vous donne l'heure en fonction de l'horloge de l'ordinateur. Tout ce que quelqu'un a à faire est de régler son horloge plusieurs minutes, ce qui retarderait aussi le chronomètre de plusieurs minutes. Ou pire, ils pourraient remettre leur horloge à une heure avant de commencer le quiz, et votre application penserait qu'ils ont passé un temps négatif à prendre le quiz. o.O
La solution consiste à utiliser flash.utils.getTimer(). Il renvoie le nombre de millisecondes écoulées depuis le début de la lecture du fichier SWF, indépendamment de l'horloge de l'ordinateur.
Voici un exemple:
var startTime:Number = getTimer();
// then after some time passes:
var elapsedMilliseconds:Number = getTimer() - startTime;
Ensuite, vous pouvez utiliser le code de Brian pour formater le temps pour l'affichage:
var strTime:String = Math.floor(elapsedMilliseconds/(1000 * 60 * 60)) + "::" +
(Math.floor(elapsedMilliseconds/(1000 * 60)) % 60) + "::" +
(Math.floor(elapsedMilliseconds/(1000)) % 60);
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);
}
prenez-vous la date de votre compte dans cet exemple, si quelqu'un commence le quiz 1 minute avant minuit? – Omu
cela ne fait aucune différence, la différence en millisecondes entre 23h et 1h doit être la même qu'entre 11h et 13h –