ActionScript 3.0, l'essentiel sous la main Adobe Flash Accueil
Fiches
Boutique
Contact
Créer un chronomètre
Nous allons maintenant créer un chronomètre prenant en compte les heures, les minutes, les secondes et les millièmes. Biensur, en 25/30/60 images par seconde, nous ne pourons afficher précisement que jusqu'au dixièmes.

Créez un champ de texte dynamique et donnez lui un nom d'occurence. Ici on l'appel chrono.

import flash.events.Event;

var save_hh; //Heures de départ du chrono
var save_mm; //Minutes de départ du chrono
var save_ss; //Secondes de départ du chrono
var save_cc; //Millièmes de départ du chrono

//Fonction ajoutant un 0 aux dixaines inférieurs à 10.
function convert_dix(num)
{
num = String(num);
if(num.length == 1) { num = "0"+num; }
return num;
}

//Fonction ajoutant un ou deux 0 aux centièmes inférieurs à 100.
function convert_cent(num)
{
num = String(num);
if(num.length == 1) { num = "00"+num; }
if(num.length == 2) { num = "0"+num; }
return num;
}

function affichage_chrono(e:Event)
{
var d:Date = new Date(); //Enregistre le temps à l'instant t.

var hh = d.hours; //Récupère les heures à l'instant t
var mm = d.minutes; //Récupère les minutes à l'instant t
var ss = d.seconds; //Récupère les secondes à l'instant t
var cc = d.milliseconds; //Récupère les millièmes à l'instant t

//Calcul le temps écoulé depuis le départ
if(cc < save_cc) { cc = 1000 - save_cc + cc; ss--; }
else { cc = cc - save_cc; }

if(ss < save_ss) { ss = 60 - save_ss + ss; mm--; }
else { ss = ss - save_ss; }

if(mm < save_mm) { mm = 60 - save_mm + mm; hh--; }
else { mm = mm - save_mm; }

if(hh < save_hh) { hh = 24 - save_hh + hh; }
else { hh = hh - save_hh; }

//Affiche le temps écoulé depuis le départ
chrono.text = convert_dix(hh) + ":" + convert_dix(mm) + ":" + convert_dix(ss) + ":" + convert_cent(cc);
}

function start_chrono()
{
var d:Date = new Date(); //Enregistre le temps au départ.

save_hh = d.hours; //Récupère les heures au départ
save_mm = d.minutes; //Récupère les minutes au départ
save_ss = d.seconds; //Récupère les secondes au départ
save_cc = d.milliseconds; //Récupère les millièmes au départ

stage.addEventListener(Event.ENTER_FRAME, affichage_chrono); //Démarre le chronomètre
}

start_chrono();

Pour calculer le temps écouler, on enregistre le temps au démarrage du chronomètre. On calcul ensuite, à chaque image (donc si l'animation est à 25ips, on calcul 25 fois par seconde) la différence entre le temps actuel et le temps de départ. C'est une simple soustraction. Il faut juste tenir compte des bases de chaque unité pour prendre en compte correctement les retenus d'unités dans la soustraction (les minutes et les secondes sont en base 60, les heures en base 24 et les millièmes en base 1000).
Commentaire(s)
Par Radamantes le 2017-06-05 a 19:02,
Bonjour et merci beaucoup pour ces lignes de codes qui m'ont bien aidé. Juste une petite question : Est-il possible d'avoir les instructions pour stopper le chronomètre et récupérer le temps écoulé dans une variable. Si oui, ce serait vraiment trop bien. En tous cas merci encore, et longue vie !