Afficher la date et l'heure en ActionScript 3 (AS3)
La date et l'heure que calcule ActionScript sont basées sur le paramétrage de la date et l'heure de l'ordinateur du client.
Nous allons utiliser la classe Date pour récupérer la date et l'heure.
Nous utiliserons ensuites les propriétés de la classe Date pour récupérer l'année, le mois, le jour, l'heure, les minutes et les secondes. Cependant, le mois et le jour sont renvoyés en tant que valeurs numériques. Nous utiliserons donc des tableaux pour stockés les mois et les jours en tant que chaînes de caractères.
-
const MOIS:Array = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
-
const JOURS:Array = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
L'affichage se fera dans deux champs de texte dynamiques.
-
var date_txt:TextField = new TextField();
-
addChild(date_txt);
-
var heure_txt:TextField = new TextField();
-
heure_txt.y = 100; addChild(heure_txt);
Nous utiliserons un Timer pour mettre à jour l'affichage toutes les secondes. Une instance de la classe Date sera créée.
Nous récupérerons l'année grâce à la propriété fullYear.
Nous récupérerons le mois grâce à la propriété month. Cependant, cette propriété renvoie un nombre entre 0 (janvier) et 11 (décembre). Nous utiliserons donc ce nombre pour récupérer l'index correspondant dans le tableau des mois.
Nous récupérerons le jour dans le mois grâce à la propriété date.
Nous récupérerons le jour dans la semaine grâce à la propriété day. Cependant, cette propriété renvoie un nombre entre 0 (dimanche) et 6 (samedi). Nous utiliserons donc ce nombre pour récupérer l'index correspondant dans le tableau des jours.
-
// on crée un objet Timer avec en paramètres le délai puis le nombre d'événements diffusés
-
var myTimer:Timer = new Timer( 1000, 0 ); //on souhaite exécuter une action toutes les 1000 millisecondes.
-
// A chaque appel du Timer (toutes les 1000 millisecondes),
-
function onAffichage( pEvt:TimerEvent ):void
-
{
-
var temps:Date = new Date(); //création de l'instance de la classe Date
-
var annee:uint = temps.fullYear; //récupération de l'année
-
var mois:String = MOIS[temps.month]; //récupération du nom du mois dans le tableau MOIS
-
var numJour:uint = temps.date; //récupération du numéro du jour dans le mois
-
var jour:String = JOURS[temps.day]; //récupération du nom du jour dans le tableau JOURS
-
date_txt.text = jour + " " + numJour + " " + mois + " " + annee; //affichage du calendrier dans le champ de texte
-
}
-
myTimer.addEventListener( TimerEvent.TIMER, onAffichage ); //Toutes les 1000 millisecondes, le timer exécute l'événement TIMER et donc en réponse, la fonction onAffichage est exécutée.
-
myTimer.start(); //démarrage du timer
Afin d'avoir un affichage cohérent, nous allons devoir ajouter un 0 devant les heures, minutes et secondes inférieures à 10. Nous allons pour cela créer une fonction, qui retournera sous forme de chaîne de caractères l'affichage correct des heures, minutes et secondes.
-
function reglage( valeur:uint ):String
-
{
-
var retour:String = "";
-
if(valeur<10)
-
{
-
retour = "0"+valeur;
-
}
-
else
-
{
-
retour = String(valeur);
-
}
-
return retour;
-
}
Dans la fonction onAffichage, nous récupérerons les heures grâce à la propriété hours.
Nous récupérerons les minutes grâce à la propriété minutes.
Nous récupérerons les secondes grâce à la propriété seconds.
-
// on crée un objet Timer avec en paramètres le délai puis le nombre d'événements diffusés
-
var myTimer:Timer = new Timer( 1000, 0 );//on souhaite exécuter une action toutes les 1000 millisecondes.
-
// A chaque appel du Timer (toutes les 1000 millisecondes),
-
function onAffichage( pEvt:TimerEvent ):void
-
{
-
var temps:Date = new Date(); //création de l'instance de la classe Date
-
var annee:uint = temps.fullYear; //récupération de l'année
-
var mois:String = MOIS[temps.month]; //récupération du nom du mois dans le tableau MOIS
-
var numJour:uint = temps.date; //récupération du numéro du jour dans le mois
-
var jour:String = JOURS[temps.day]; //récupération du nom du jour dans le tableau JOURS
-
date_txt.text = jour + " " + numJour + " " + mois + " " + annee; //affichage du calendrier dans le champ de texte
-
var heure:String = reglage( temps.hours ); //récupération et transformation éventuelle des heures
-
var minute:String = reglage( temps.minutes ); //récupération et transformation éventuelle des minutes
-
var seconde:String = reglage( temps.seconds ); //récupération et transformation éventuelle des secondes heure_txt.texte = heure + ":" + minute + ":" + seconde;
-
}
-
myTimer.addEventListener( TimerEvent.TIMER, onAffichage ); //Toutes les 1000 millisecondes, le timer exécute l'événement TIMER et donc en réponse, la fonction onAffichage est exécutée.
-
myTimer.start(); //démarrage du timer
Le script complet :
-
const MOIS:Array = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
-
const JOURS:Array = new Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
-
var date_txt:TextField = new TextField(); addChild(date_txt);
-
var heure_txt:TextField = new TextField();
-
heure_txt.y = 100;
-
addChild(heure_txt);
-
function reglage( valeur:uint ):String
-
{
-
var retour:String = "";
-
if(valeur<10) {
-
retour = "0"+valeur;
-
}
-
else
-
{
-
retour = String(valeur);
-
}
-
return retour;
-
}
-
// on crée un objet Timer avec en paramètres le délai puis le nombre d'événements diffusés
-
var myTimer:Timer = new Timer( 1000, 0 ); //on souhaite exécuter une action toutes les 1000 millisecondes.
-
// A chaque appel du Timer (toutes les 1000 millisecondes),
-
function onAffichage( pEvt:TimerEvent ):void
-
{
-
var temps:Date = new Date(); //création de l'instance de la classe Date
-
var annee:uint = temps.fullYear; //récupération de l'année
-
var mois:String = MOIS[temps.month]; //récupération du nom du mois dans le tableau MOIS
-
var numJour:uint = temps.date; //récupération du numéro du jour dans le mois
-
var jour:String = JOURS[temps.day]; //récupération du nom du jour dans le tableau JOURS
-
date_txt.text = jour + " " + numJour + " " + mois + " " + annee; //affichage du calendrier dans le champ de texte
-
var heure:String = reglage( temps.hours ); //récupération et transformation éventuelle des heures
-
var minute:String = reglage( temps.minutes ); //récupération et transformation éventuelle des minutes
-
var seconde:String = reglage( temps.seconds ); //récupération et transformation éventuelle des secondes
-
heure_txt.text = heure + ":" + minute + ":" + seconde;
-
}
-
myTimer.addEventListener( TimerEvent.TIMER, onAffichage ); //Toutes les 1000 millisecondes, le timer exécute l'événement TIMER et donc en réponse, la fonction onAffichage est exécutée.
-
myTimer.start(); //démarrage du timer
;)
Je suis Antony Chauviré, développeur sur la Flash Platform.
Merci beaucoup ! Trop bien ton ton blog ! Bravo !
Salut,
Heureux propriétaire d'un mac intel, je désespérais de voir arriver la V9 de flash.
Quel bonheur de pouvoir enfin travailler rapidement ...
Restait le problème de l'AS3 carr bien qu'il soit possible de travailler avec la V9 en AS2, l'intérêt me parait moindre.
Et pour cela, ton site répond à quelques une de mes interrogations.
Merci donc.
bonjour,
merci pour ce script il fonctionne parfaitement..cependant, j'aimerais savoir comment paramétrer l'affichage des deux valeurs..positionnement, police, couleur, font-size, etc..est ce possible?
merci pour vos réponses
Merci pour le script c'est niquel ^^
Lio :
var myFormat:TextFormat = new TextFormat();/* et là tu mets tous tes paramètres pour le texte */
// myTextField étant ton champ texte :
myTextField.x // (resp .y) pour positionner ton champ en x (resp en y)
myTextField.width //(resp .height) pour définir la largeur (resp hauteur) de ton champ
Salut et merci pour tes scripts,
je les suis depuis quelques temps, donc voilà,
les remerciements sont faits ;)
Attention toutefois au codage de ceux-ci si tu passes par php,
tes greater than sont transformés en < :S
Bonne continuation ;)