Compte a rebours flash

Bonjour,

j'aimerai réaliser un compte a rebour sur flash mx avec mois, jours, heures, minutes et secondes restants
la date de fin étant le 1er avril 2009 à minuit.
J'ai testé ce code:
// definition de la date de fin, il suffit de changer les valeurs pour donner cette date
annee_fin = 2010;
heure_fin = 00;
minute_fin = 01;
jour_fin = 01;
seconde_fin = 00;
mois_fin = 04;
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
affichage_fin = +fin.getMonth()+" mois, "+fin.getDate()+" jours, "+fin.getHours()+" heures,"+fin.getMinutes()+" minutes, "+fin.getSeconds()+" secondes.";

mais le soucis c'est que les mois et jours restants qui s'affichent ne sont pas corrects car il m'affiche qu'il reste 4 mois et 1 jours, et les heures, minutes et secondes ne défilent pas.
Quelqu'un peut t'il m'aider ou me donner un code qui fonctionne.
Merci beaucoup d'avance.
Configuration: Windows XP Internet Explorer 7.0

26 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Le fil porte sur un compte à rebours en Flash MX affichant mois, jours, heures, minutes et secondes jusqu'au 1er avril 2009 à minuit, mais le calcul des mois et jours est erroné. La solution clé rappelle que les mois sont indexés de 0 à 11, d'où le décalage; il faut utiliser 03 pour avril et recalculer le reste avec une date fin correcte, puis actualiser via onEnterFrame. Concrètement, le calcul devient fin = new Date(annee_fin-annee, mois_fin-mois, jour_fin-jour, heure_fin-heure, minutes_fin-minute, seconde_fin-seconde) et l'affichage se met à jour chaque frame via onEnterFrame.

Bobot (l’IA à votre service)
  1. Yes ça marche un grand merci pour ton aide Tsunami chups.
    Pour le souci du décalage d'un mois c'est parce que flash considére les mois de 0 à 11 donc janvier 0 et décembre 11.
    Pour ceux que ça intéresse voici le bon code:

    // definition de la date de fin, il suffit de changer les valeurs pour donner cette date
    annee_fin = 2010;
    heure_fin = 00;
    minute_fin = 0;
    jour_fin = 01;
    seconde_fin = 0;
    mois_fin = 03;
    ladate_fin = new Date(annee_fin, mois_fin, jour_fin, heure_fin, minute_fin, seconde_fin);
    // definition de la date en cours
    ladate = new Date();
    annee = ladate.getFullYear();
    heure = ladate.getHours();
    minute = ladate.getMinutes();
    jour = ladate.getDate();
    seconde = ladate.getSeconds();
    mois = ladate.getMonth();
    fin = new Date(annee_fin-annee, mois_fin-mois, jour_fin-jour, heure_fin-heure, minutes_fin-minute, seconde_fin-seconde);
    this.onEnterFrame = function (){

    affichage_fin = +fin.getMonth()+" mois, "+fin.getDate()+" jours, "+fin.getHours()+" heures,"+fin.getMinutes()+" minutes, "+fin.getSeconds()+" secondes.";

    };

    et encore merci
    1. pour faire defiler ton code en direct il faut que tu utilise onEnterFrame pour pouvoir executer des action en temps "reel" et ainsi initialiser les valeur a afficher

      exemple :

      onEnterFrame = function()
      {
      sec = sec + (1/frame);
      trace(sec);
      }

      frame étant le nombre d'image par seconde pour arrondire a une seconde

      essaye de te rencarder de ce coté la
      1. merci pour ta réponse mais je ne suis pas sure d'avoir compris, il faut ajouter onEnterFrame au code que j'ai mis dans mon précédent message ?
        1. oui

          onEnterFrame ser a reproduire des action de maniere a avoir 1 action par Frame
          si tu as regler a 12image par seconde en 1seconde ton affichage changera 12 fois & co

          l'affichage du temps restant si tu veu qu'il soit dynamique doit etre placer dans onEnterFrame pour qu'il ce rafraischissent
          1. dans ton action script sur le scene principal ou le root

            ou alors la ou il y a le reste de ton action script
            1. merci mais ça ne fonctionne pas quand je fais ctrl+entrée j'ai une page "sortie" qui s'affiche avec pleins de chiffres
              1. ba s'était un exemple

                place ca dans onEnterFrame

                affichage_fin = +fin.getMonth()+" mois, "+fin.getDate()+" jours, "+fin.getHours()+" heures,"+fin.getMinutes()+" minutes, "+fin.getSeconds()+" secondes.";
                1. désolée mais je ne m'y connais pas encore beaucoup en flash peux tu m'expliquer clairement.
                  J'ai mon anim flash avec un champs de texte dynamique ou je veux qui s'affiche mon compte a rebour qui doit finir le 1er avril a 0h00.
                  En repartant de zéro qu'est ce que je mets exactements dans mon action script pour avoir ce que je veux.
                  merci beaucoup pour ton aide.
                  1. ton scrit qui recupere le temps actuel date heure and co
                    la date que tu veu arrater

                    this.onEnterFramr = function()
                    {
                    //affichage dans ton champs
                    }

                    la jeu peu pas faire plus simple
                    1. Bonjour,

                      encore merci pour ton aide mais j'ai tappé le code suivant avec tes explications que j'ai comprise:
                      // definition de la date de fin
                      annee_fin = 2010;
                      heure_fin = 00;
                      minute_fin = 0;
                      jour_fin = 01;
                      seconde_fin = 0;
                      mois_fin = 04;
                      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);
                      this.onEnterFrame = function () { sec = sec+(1/12);trace(sec);};
                      // affichage des infos
                      affichage_fin = +fin.getMonth()+" mois, "+fin.getDate()+" jours, "+fin.getHours()+" heures,"+fin.getMinutes()+" minutes, "+fin.getSeconds()+" secondes.";

                      Mais j'ai toujours un décalage d'un mois de la date de départ qui concidére que l'on est en octobre et une page "sortie" avec plein de chiffres.
                      Peux tu m'expliquer ce qui ne va pas? je suis surement gourde sur ce coup là.
                      merci
                      1. essaye ca

                        this.onEnterFrame = function () { 
                        
                        affichage_fin = +fin.getMonth()+" mois, "+fin.getDate()+" jours, "+fin.getHours()+" heures,"+fin.getMinutes()+" minutes, "+fin.getSeconds()+" secondes."; 
                        
                        }; 


                        sec = sec+(1/12);trace(sec); n'était qu'un exemple ^^'

                        ladate = new Date(); ne te sert a rien la ou elle est placer remonte la avant son utilisation

                        et pour ton probleme de lien sortir s'est peu etre parce que tu ne fait pas de confrontation entre la date actuel et la date de fin

                        if(fin == ladate)
                        {
                                //affichage du lien de sorti
                        }
                        else
                        {
                             //le reste de ton script
                        }
                        1. Ba ecoute ca me fait plaisir ca fait un moment que je n'ai pas de flash concretement donc ^^

                          si ca a pu t'aider s'est good

                          bonne chanse pour la suite hésite pas a m'envoyer un mp si tu as un soucis ^^
                          1. Re lol,
                            j'ai encore un petit soucis je viens de me rendre compte que si je mets la date à demain 0h, il n'affiche pas le bon temp restant apparament il bug dans les dernières 24h. As tu une solution?
                            merci
                            1. essayue de voir ce que te renvois la varriable qui affiche la date d'ajourd'hui
                              si s'est formater de la meme maniere et surtout que s'est la bonne valeur
                              1. C'est bien la bonne date d'indiqué quand je l'affiche mais à la date de demain il me dit qu'il reste 11 mois et 31 jours...
                                1. verrifie le calcule entre les deux date comme tu as dit nous on est baser de 1a 12 mois, mais flash de 0 a 11

                                  ca peu eventuelement venir de la

                                  verrifie que la date que tu met de fin est bien compris entre 0 et 11 mois par exemple octobre sera 9 et non 10

                                  je pense que s'est ca
                                  1. Non ce n'est pas ça vu que je l'avais fait remarquer je l'avais forcément pris en compte.
                                    C'est dommage car jusque là tout marche il ne reste plus qu'a trouver la solution pour le bug des dernières 24h.
                                    Tu as une autre solution?
                                    1. la je ne vois pas
                                      peu etre que la method est pas bonne le mieu serai de convertire la date en seconde et les confronter et renformater ensuite le resultat
                                      1. Que veux tu dire par reformater le résultat?
                                        je t'avoue que convertir la date en secondes ca ne m'intéresse pas vu que c'est dans 6mois.
                                        J'en ai besoin pour demain, tu ne connais pas une autre méthode pour faire un compte à rebours?
                                        Sinon autre petite question j'ai mis une typo spéciale pour le compte a rebour qui défilera a l'écran, si un autre ordi n'a pas la typo du coup ça ne sera pa la même? si non, il y a t'il une solution pour garder la typo?
                                        • 1
                                        • 2