COMPTE À REBOURS ACTIONSCRIPT3

Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
- - Dernière réponse : tatenvoyage
Messages postés
4
Date d'inscription
samedi 7 avril 2012
Statut
Membre
Dernière intervention
10 avril 2012
- 10 avril 2012 à 22:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48899-compte-a-rebours-actionscript3

pegase31
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
6 -
Question idiote, mais :
Pourquoi ne pas avoir utilisé la classe Date ?

Peg'
sagwork
Messages postés
7
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
25 juin 2010
-
Excellente question, je n'ai pas trouvé de fonction de conversion simple dans la classe Date. Pour m'aider à développer cette API je me suis basé sur trois sources : "actionscript par l'exemple" d'Oreilly, "actionscript 3" de David Tardiveau et un script provenant de javascript.fr.

La logique métier vient donc en grande partie d'une translation du javascript vers actionscript. Pour les conversions, le livre Oreilly me proposait une classe perso qui enrichie le framework et je déteste utiliser des classes que je n'ai pas développé moi-même (je ne comprends pas forcement la logique).

Mais au vu de ta remarque, j'ai du rater quelquechose... ^^

Merci en tout cas Peg pour ta rapidité de réaction. Comment aurais tu implémenté la classe date pour quelle fasse ce qu'on lui demande?
sagwork
Messages postés
7
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
25 juin 2010
-
Pour info :

//définition des variables
public var dateRef:Date;//date de référence du compte à rebours
public var maintenant:Date;//instant présent (peut etre n'importe quelle date)

//initialisation des dates
public function defDatesRef():void
{
maintenant = new Date();
dateRef = new Date(2009, 0, 07);
}

N'est ce point cette fameuse classe Date?!! (il est vrai que je ne demande rien au préprocesseur : pas d'import en ce qui concerne cette classe... ce chargerait elle systématiquement dut au développement sous FLEX?...)
sagwork
Messages postés
7
Date d'inscription
mardi 6 janvier 2009
Statut
Membre
Dernière intervention
25 juin 2010
-
Petite rectification de l'absurdité citée au dessus :

la classe "Date" hérite de la classe "Object", tout comme la majeures partie des classes (actionscript étant un langage objet), je n'ai pas cerné exactement quelle classe implémente par héritage les méthodes de la classe "Date" mais elles sont disponibles c'est une certitude : le code fonctionne (j'avoue que c'est pas logique vu l'explication précédente mais ça fonctionne ^^).

Toutes ces réflexions m'ont permis de constater que ma source est en fait un calculateur de différence de temps entre deux dates (ce pourrait être des références complètement différentes, se serait adaptable) modifié pour fournir un compte à rebours. Cette solution a l'avantage de permettre de grandes libertés quand à l'extensibilité et la portabilité de cette fonctionnalité.

Julien
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Salut...
L'objet date par lui même ne résoudre pas ton problème ! L'objet Date servant à la manipulation de "DATE" non de "TEMPS". Et toi ton soucis comme tu l'as dis, est convertir une différence.

Pour obtenir une difference de temps exacte, entre deux dates, fait comme suit (AS3):

var o :Date = new Date() ;
// Instant présent...

var a :Number = Date.UTC(o.fullYear,o.month,o.date,o.hours,o.minutes,o.seconds ) ;
// Millisecondes du 01/01/1970 à maintenant...

var b :Number = Date.UTC(2012,1,15,13,30,0) ;
// Millisecondes du 01/01/1970 jusqu'au 15 février 2012, 13H30...

var c :Number = Math.round( (b-a)/1000 ) ;
// Le nombre de secondes entre maintenant et le 15 février 2012, 13H30...

A partir de ceci à toi de convertir la différence en ce que tu veux... Je te rappelle que si tu souhaites de la précision, tu dois tenir compte des années bisextile. Il serait con de faire un compte à rebours qui ne fonctionne pas correctement au dela d'une année, afin d'éviter ce soucis relativement prise de tête.

A simplifier....
Bon courage !