Centre de Formation Flash - Forums Adobe Flash: Compte à rebours le retour ! - Centre de Formation Flash - Forums Adobe Flash

Voir le contenu

Page 1 sur 1
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

Compte à rebours le retour ! Les sources disparaissent...

#1 Utilisateur non-connecté   vandersteen

  • Ceinture Verte
  • Groupe : Membres
  • Messages : 175
  • Inscrit : 12-February 03
  • Location:Lille
  • Interests:Flash MX.<br />De Macromedia à Adobe, du &quot;Timeline à la Video&quot;<br />Createur et Programmeur, j'essaye d'enfiler les deux casquettes : artistique, et la rigueur de l'ingénieur. Dans le premier cas j'assemble des lettres, dans le deuxième cas j'assemble et j'adapte des phrases (des modules), pas plus pour le moment.<br />Bref pour moi être flasheur c'est savoir décomposer pour recomposer, tout en restant dans l'esprit de l'art, c'est à dire ne pas trop en demander à notre playeur flash, même si il en gère déjà pas mal.<br />Bref, je reste surtout un théoricien, passionné, qui suit avec intérêt les évolutions du format SWF.
  • Version logiciel:Opensource
  • Compétences: Développeur Actionscript 3.

Posté 13 March 2006 - 05:21 AM

Voilà je me disais que je ferai bien un compte à rebours.
Exercice traditionnel de la programmation en général.
En fait j'en ai fait un il y a quelques années pour mon site web, c'était en 2004.
L'une de mes sources d'inspiration était sans doute le site de Termnator 3.

J'ai même à l'époque posté quelques posts à ce sujet dans le Forum.

Mais là je sèche ...

Le problème reste le même : année jour heure seconde milliseconde restant

La source la plus simple et la plus aboutit ets la suivante (elle date un peu)

Citation :
// definition de la date de fin, il suffit de changer les valeurs pour donner cette date
annee_fin = 2004;
heure_fin = 12;
minute_fin = 0;
jour_fin = 10;
seconde_fin = 0;
mois_fin = 11;
ladate_fin = new Date(annee_fin,mois_fin ,jour_fin ,heure_fin,minute_fin ,seconde_fin);

//definition de la date en cours
annee = ladate.getFullYear();
heure = ladate.getHours();
minute = ladate.getMinutes();
jour = ladate.getDate();
seconde = ladate.getSeconds();
mois = ladate.getMonth();
ladate = new Date();

//definition du compte à rebourd
fin = new Date (annee_fin-annee,mois_fin-mois ,jour_fin-jour ,heure_fin-heure,minutes_fin-minute ,seconde_fin-seconde);

// affichage des infos
timer = "Nous sommes le "+jour+"/"+mois+"/"+annee+"  . Il est "+heure+" heures "+minute+" minutes "+seconde+" secondes";
timer_fin = "L'échéance prend fin le "+jour_fin+"/"+mois_fin+"/"+annee_fin+"  , à "+heure_fin+" heures "+minute_fin+"0 minutes "+seconde_fin+"0 secondes";
affichage_fin = "Il reste donc " + fin.getMonth()+ " mois, " + fin.getDate() +" jours, "+ fin.getHours() +" heures," + fin.getMinutes() +" minutes, " +  fin.getSeconds() +" secondes.";


1° Comme vous pouvez le constater il manque les millisecondes, premier problème à résoudre pour l'affichage...
2° Mais là je dois être crevé parceque je ne comprends pas la différence entre variable et instance pour le champs texte dynamique :
Sur la scène il y trois champs texte dynamique avec pour chacun comme non de variable attribué : Timer, timer_fin, affichage_fin... Dans quel panneau attribut-on un nom à chacun de ces champs texte. Je voudrai changer "Timer" en "Compteur" etc.
J'ai donc exploré le Movie pour voir comment sont défini les champs texte
A (empty), (Timer), <Compteur>
A (empty), (Timer_fin),...
A (empty), (Affichage_fin),...

Bref, soit j'ai vieilli, soit c'est une évolution de la nouvelle version de Flash...

Quelqu'un connait-t-il une source simple et exploitable ? ou les modifications à apporter pour les millisecondes... gourou.gif et puis me dire pourquoi je ne peux pas modifier le non de variable des champs de texte.
Merci !

PS: j'ai trouvé une source sur Kirupa, mais je veux que tout soit codé en actionscript...

Fichier(s) joint(s)


Ce message a été modifié par vandersteen : 13 March 2006 - 05:27 AM




0

#2 Utilisateur non-connecté   vandersteen

  • Ceinture Verte
  • Groupe : Membres
  • Messages : 175
  • Inscrit : 12-February 03
  • Location:Lille
  • Interests:Flash MX.<br />De Macromedia à Adobe, du &quot;Timeline à la Video&quot;<br />Createur et Programmeur, j'essaye d'enfiler les deux casquettes : artistique, et la rigueur de l'ingénieur. Dans le premier cas j'assemble des lettres, dans le deuxième cas j'assemble et j'adapte des phrases (des modules), pas plus pour le moment.<br />Bref pour moi être flasheur c'est savoir décomposer pour recomposer, tout en restant dans l'esprit de l'art, c'est à dire ne pas trop en demander à notre playeur flash, même si il en gère déjà pas mal.<br />Bref, je reste surtout un théoricien, passionné, qui suit avec intérêt les évolutions du format SWF.
  • Version logiciel:Opensource
  • Compétences: Développeur Actionscript 3.

Posté 13 March 2006 - 05:50 AM

J'ai continué ma recherche et j'ai finalement trouvé une source assez satisfaisante, encore plus simple que le code proposé précédemment.

Toutefois, j'aurais aimai une optimisation complète. Les sources les plus optimisés et minimalistes sont les bien venus : 20-30 lignes de codes grand max...



0

#3 Utilisateur non-connecté   Jano 95

  • avec modération
  • Groupe : Modérateurs
  • Messages : 4014
  • Inscrit : 04-August 03
  • Gender:Male
  • Location:Val d'Oise
  • Interests:Informatique
  • Version logiciel:Flash 8
  • Compétences: Non communiqué.

Posté 13 March 2006 - 06:16 PM

Salut

Voici ma manière de faire
ActionScript
_root.onEnterFrame = function() {
da = new Date();
an = new Date(2006,4,1,0,0,0,0);
tp = Math.floor(an-da)/1000;
j = Math.floor(tp/(86400));
if (j > 1) { jo = j+" jours " };
if (j == 1) { jo = j+" jour " };
if (j <= 0) { jo = "" };
h = tp - j*86400;
h = Math.floor(h/3600);
if (h < 10) h = "0"+h;
if (h > 1) he = h+" heures ";
if (h <= 1) he = h+" heure ";
if (j <=0 && h <= 0 ) he = "";
m = tp - j*86400 - h*3600;
m = Math.floor(m/60);
if(m < 10) m = "0"+m;
if (m > 1) mi = m+" minutes ";
if (m <= 1) mi = m+" minute ";
if (j <= 0 && h <= 0 && m <= 0) mi = "";
s = Math.floor(tp - j*86400 - h*3600 - m*60);
if (s < 10) s = "0"+s;
if (s > 1) se = s+" secondes";
if (s <= 1) se = s+" seconde ";
tit.text = "La retraite dans";
temp.text = jo+he+mi+se;
if (da.getMonth() == 4) {
delete _root.onEnterFrame;
};
};

avec un exemple ici

Jano 95

Flash 8 - AS2

Flash permet de faire simplement beaucoup de choses compliquées, et de faire de façon compliquée certaines choses simples...(phn 14/08/2008).
0

#4 Utilisateur non-connecté   vandersteen

  • Ceinture Verte
  • Groupe : Membres
  • Messages : 175
  • Inscrit : 12-February 03
  • Location:Lille
  • Interests:Flash MX.<br />De Macromedia à Adobe, du &quot;Timeline à la Video&quot;<br />Createur et Programmeur, j'essaye d'enfiler les deux casquettes : artistique, et la rigueur de l'ingénieur. Dans le premier cas j'assemble des lettres, dans le deuxième cas j'assemble et j'adapte des phrases (des modules), pas plus pour le moment.<br />Bref pour moi être flasheur c'est savoir décomposer pour recomposer, tout en restant dans l'esprit de l'art, c'est à dire ne pas trop en demander à notre playeur flash, même si il en gère déjà pas mal.<br />Bref, je reste surtout un théoricien, passionné, qui suit avec intérêt les évolutions du format SWF.
  • Version logiciel:Opensource
  • Compétences: Développeur Actionscript 3.

Posté 13 March 2006 - 08:25 PM

Ouais, c'est sympa de me répondre, mais ce n'est pas optimum !!!
Il faut également l'affichage des millisecondes.
Donc un défilement de chiffre plus rapide

Citation :
date.prototype.decompteDate = function (annee, mois, jour, heure) {
dateEntree = new Date(annee, mois-1, jour, heure);
maintenant = new Date();
diffbis = 0;
diffmillisecondes = dateEntree-maintenant;
diffans = Math.floor(Math.abs(diffmillisecondes/31536000000));
for (i=Math.min(annee, maintenant.getFullYear()); i<=Math.max(annee, maintenant.getFullYear()); i++) {
if (i%400 == 0 || (i%4 == 0 && i%100 != 0)) {
diffbis += 1;
}
}
diffjours = Math.floor(Math.abs((diffmillisecondes%31536000000)/86400000));
if (diffbis>365) {
diffans -= Math.floor(diffbis/365);
diffbis = diffbis%365;
}
if (diffbis>diffjours) {
diffans -= 1;
diffjours = 365-(diffbis-diffjours);
} else {
diffjours -= diffbis;
}
if (diffjours<10) {
diffjours = "0"+diffjours;
}
diffheures = Math.floor(Math.abs((diffmillisecondes%86400000)/3600000));
if (diffheures<10) {
diffheures = "0"+diffheures;
}
diffminutes = Math.floor(Math.abs((diffmillisecondes%3600000)/60000));
if (diffminutes<10) {
diffminutes = "0"+diffminutes;
}
diffsecondes = Math.floor(Math.abs((diffmillisecondes%60000)/1000));
if (diffsecondes<10) {
diffsecondes = "0"+diffsecondes;
}
return diffans+" an(s), "+diffjours+" jour(s), "+diffheures+" heure(s), "+diffminutes+"minutes(s), "+diffsecondes+" seconde(s)";
};


Citation :
maDate=new Date();
monChamps=maDate.decompteDate((a)aaa,(m)m,(j)j,h(h));
//n'entrez qu'un chiffre si le mois, le jour ou l'heure sont inférieurs à 10
//les mois commencent à janvier=1....décembre=12
//ex:3 février 1985, 9h -> (1985,2,3,9)


J'ai retrouvé ce thread qui devait être ma source il y a quelques années pour l'intégration des millisecondes: http://flash.media-b...?showtopic=4143, réponse de Ekameleon.


Seulement entre temps la verison de Flash a évolué et là j'ai testé le code en définissant un champs texte comme variable monchamps et j'obtiens dans le Test Movie "Undefined"




0

#5 Utilisateur non-connecté   vandersteen

  • Ceinture Verte
  • Groupe : Membres
  • Messages : 175
  • Inscrit : 12-February 03
  • Location:Lille
  • Interests:Flash MX.<br />De Macromedia à Adobe, du &quot;Timeline à la Video&quot;<br />Createur et Programmeur, j'essaye d'enfiler les deux casquettes : artistique, et la rigueur de l'ingénieur. Dans le premier cas j'assemble des lettres, dans le deuxième cas j'assemble et j'adapte des phrases (des modules), pas plus pour le moment.<br />Bref pour moi être flasheur c'est savoir décomposer pour recomposer, tout en restant dans l'esprit de l'art, c'est à dire ne pas trop en demander à notre playeur flash, même si il en gère déjà pas mal.<br />Bref, je reste surtout un théoricien, passionné, qui suit avec intérêt les évolutions du format SWF.
  • Version logiciel:Opensource
  • Compétences: Développeur Actionscript 3.

Posté 13 March 2006 - 08:35 PM

J'utilise Flash 8, et la définition des variables semble dposer problème !

Un indice, une suggestion?



0

#6 Utilisateur non-connecté   Jano 95

  • avec modération
  • Groupe : Modérateurs
  • Messages : 4014
  • Inscrit : 04-August 03
  • Gender:Male
  • Location:Val d'Oise
  • Interests:Informatique
  • Version logiciel:Flash 8
  • Compétences: Non communiqué.

Posté 13 March 2006 - 09:59 PM

Jano 95 (Mar 13 2006, 06:16 PM) a dit :
da = new Date();
an = new Date(2006,4,1,0,0,0,0);

da = la date du jour au millième de seconde.
an = le 1er mai 2006 à 0h 0mn 0s en millième de seconde également.

an - da = la différence des 2 dates en millièmes de seconde.
Jano 95 (Mar 13 2006, 06:16 PM) a dit :
tp = Math.floor(an-da)/1000;
en divisant par 1000, me donne la différence en secondes.

Après, ce n'est qu'une question de savoir combien de secondes dans une journée, dans une heure, dans une minute...

Edit : je n'ai que Flash 6 icon_cry.gif

Re édit : Sinon tu as aussi http://proto.layer51.com/l.aspx?p=9 icon_lol.gif

Ce message a été modifié par Jano 95 : 13 March 2006 - 10:03 PM

Jano 95

Flash 8 - AS2

Flash permet de faire simplement beaucoup de choses compliquées, et de faire de façon compliquée certaines choses simples...(phn 14/08/2008).
0

#7 Utilisateur non-connecté   vandersteen

  • Ceinture Verte
  • Groupe : Membres
  • Messages : 175
  • Inscrit : 12-February 03
  • Location:Lille
  • Interests:Flash MX.<br />De Macromedia à Adobe, du &quot;Timeline à la Video&quot;<br />Createur et Programmeur, j'essaye d'enfiler les deux casquettes : artistique, et la rigueur de l'ingénieur. Dans le premier cas j'assemble des lettres, dans le deuxième cas j'assemble et j'adapte des phrases (des modules), pas plus pour le moment.<br />Bref pour moi être flasheur c'est savoir décomposer pour recomposer, tout en restant dans l'esprit de l'art, c'est à dire ne pas trop en demander à notre playeur flash, même si il en gère déjà pas mal.<br />Bref, je reste surtout un théoricien, passionné, qui suit avec intérêt les évolutions du format SWF.
  • Version logiciel:Opensource
  • Compétences: Développeur Actionscript 3.

Posté 14 March 2006 - 01:02 AM

...
Citation :
diffmillisecondes = Math.floor(Math.abs(diffmillisecondes%1000));
if (diffmillisecondes<100) {
diffmillisecondes = "0"+diffsecondes;
}
...


Citation :
return diffans+" an(s), "+diffjours+" jour(s), "+diffheures+" heure(s), "+diffminutes+"minutes(s), "+diffsecondes+","+diffmillisecondes+" seconde(s),";};


2 Code à rajouter "au bon endroit" .

>>> Donne l'affichage des millisecondes et ne sotte pas.

Attention ce code est fait pour FlashMX2004, quelques adaptations de variables et de leurs définitions sont necessaires pour flash 8, à suivre...

Merci Jano95 ! ...Je m'apperçoit que chez proto layer 51, ça ne bouche pas beaucoup, peut-être je me trompe ! le code du countdown que j'y ai trouvé n'est pas terrible et date de 2003 !



0

Page 1 sur 1
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

2 utilisateur(s) dans ce sujet
0 membre(s), 2 invité(s), 0 utilisateur(s) anonyme(s)