Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Horloge et réveil

Compatible ActionScript 1 et 2. Utilise des techniques dépréciées. Cliquer pour en savoir plus sur les compatibilités.Par ekameleon (Marc Alcaraz)

Article issu du forum, écrit par ekameleon le 1 janvier 2003

Dans l'idée de travailler un peu avec l'objet Date de flash voici un petit tutorial qui permet de gérer une horloge de type analogique en flash (avec les aiguilles) et de mettre en place un système de “réveil” ou d'alerte, tout dépend de l'application, pour déclencher un évènement ou une fonction à une heure précise. Le tutorial peut être poussé plus loin avec une date précise au niveau de l'année, du mois et du jour par exemple. Mais une fois compris et en ayant un peu consulté le dictionnaire actionscript l'objet Date ne devrait plus avoir de secret pour vous. En attendant vous pouvez commencer par lire un tutorial plus théorique à ce sujet.

L"extension Adobe Flash Plugin est nécessaire pour afficher ce contenu.

Source de l'article

Je mets ci-aprés le contenu de la première frame (image clé) du fichier source de ce tutorial. Le code se situe sur cette unique frame.

/*-------------------------------------------------------------------------------
 
Principe : On crée une horloge constituée de 3 aiguilles sous la forme de 3 clips :
 
   (3 clips ayant pour nom d'occurence : "heure" , "minute" et "seconde") 
 
Un système de réveil est mis en place par l'intermédiaire d'un objet Date "reveil" qui sera détermine
 
une heure définie par le développeur pour annoncer quelquechose dans un champ dynamique placé sur l'animation principale.
 
Pour illustrer ce tutorial, différents clips sont positionnés sur la scène principale, je vous conseille de bien regarder ceux ci :
 
 - nom d'occurence
 
 - contenu de chacun
 
 Tout le code par contre se trouve ici sur cette même frame (image clé), seul des noms d'occurences ou de variables sont placés où il faut.
 
 
 
Méthodes :
 
 - Utilisation de l'objet Date et de certaines de ses propriétés.
 
 - Utilisation de l'évènement onEnterFrame appliqué sur _root (la scène principale).
 
 
 
Note : Il est possible bien entendu de gérer des champs de saisis avec des restrictions etc... pour que l'utilisateur entre l'heure qu'il souhaite.
 
Mais dans cette version je n'ai pas traité tout cela :) A vous de chercher un peu ou d'attendre les prochains tutoriaux à ce sujet :)
 
 
 
-------------------------------------------------------------------------------*/
 
 
 
// Méthode Simple - version 1
 
 
 
// Prototype qui permet de définir l'heure (heure:minute:seconde) du réveil
 
Date.prototype.setalertTime = function (heure,minute,seconde) {
 
	this.setHours (heure); // on affecte l'heure du réveil
 
	this.setMinutes (minute); // on affecte les minutes du réveil
 
	this.setSeconds (seconde); // on affecte les secondes du réveil
 
}
 
 
 
// Prototype qui sert juste à afficher sur la scène les paramètres heure, minute et seconde de l'objet date spécifié.
 
Date.prototype.affichage = function (cible) {
 
	cible.heure_visu.text = this.getHours ();
 
	cible.minute_visu.text = this.getMinutes ();
 
	cible.seconde_visu.text = this.getSeconds ();
 
}
 
 
 
// Initialisation de l'objet Date : "reveil" qui permet de définir une heure précise pour déclencher le réveil
 
reveil = new Date(); // création de l'objet
 
reveil.setalertTime (0,0,0); // attribution des propriétés heure/minute/seconde du reveil
 
reveil.affichage(_root.reveilClip); // affichage pour la mise en page du tutorial
 
 
 
// on va créer une boucle qui permettra de mettre à jour l'objet Date : "temps" qui défini l'heure courante basé sur l'heure "système" de votre machine.
 
// Pour en savoir plus sur l'objet Date et ses propriétés je vous conseille d'utiliser la référence de flash MX ou le dictionnaire actionscript les exemples 
 
// sont suffisament explicites.
 
 
 
_root.onEnterFrame = function () {
 
	temps = new Date();
 
	h = temps.getHours();
 
	m = temps.getMinutes();
 
	s = temps.getSeconds();
 
	if (h > 12) {
 
  h -= 12; // on décrémente de 12 l'heure si c'est l'aprés midi (il n'y a que 12 graduations sur une horloge analogique)
 
	} else if (h==0) {
 
  h = 12; // si il est 0h alors on dit qu'il est 12 h pour l'horloge analogique
 
	} 
 
	// affectation sur les clips de la rotation des aiguilles.
 
	_root.heure._rotation = h * 30 + Math.round(m/2);
 
	_root.minute._rotation = m * 6 + Math.round(s/10);
 
	_root.seconde._rotation = s * 6;
 
	temps.affichage(_root.montreClip); // affichage pour la mise en page du tutorial
 
	if (temps.toString() == reveil.toString()) {
 
  message = "-- il est l'heure de se réveiller et de lire l'aide de flash smile.gif --";
 
   _root.texte.text = message; // on affiche sur un champ dynamique sur _root le message voulu
 
	}
 
 
 
}