Partage
  • Partager sur Facebook
  • Partager sur Twitter

AS3 - Problème chronomètre

Sujet résolu
    14 septembre 2010 à 21:36:55

    Bonjour, je suis en train de faire un chronomètre en AS3, qui affiche les millisecondes, les secondes, les minutes et les heures. Je suis capable de faire fonctionner correctement mon chronomètre mais je suis incapable d'ajouter les zéros devant les secondes, minutes et heures.

    package cem 
    {
    	
    	import flash.display.MovieClip;
    	import flash.utils.Timer;
    	import flash.events.TimerEvent;
    	import flash.text.TextField;
    	
    	public class Chronometre extends MovieClip
    	{
    		
    		private var horloge:Timer;
    		private var chronoDate:Date;
    		
    		private var heures:Number;
    		private var minutes:Number;
    		private var secondes:Number;
    		private var millisecondes:Number;
    		
    		public function Chronometre():void
    		{
    			horloge = new Timer(50);
    			
    			horloge.addEventListener(TimerEvent.TIMER, ecouteur);
    			chronoDate = new Date();
    			horloge.start();
    			
    			//trace('test');
    		}
    		
    		public function ecouteur(e:TimerEvent):void
    		{
    			calculerTempsEcoule();
    			affichage.text = heures + ":" + minutes + ":" + secondes + ":" + millisecondes;
    		}
    		
    		//Calcul du temps écoulé
    		private function calculerTempsEcoule():void
    		{
    			var mSecEcoulees:Number = new Date().getTime() - chronoDate.getTime();
    			
    			heures = Math.floor(mSecEcoulees / (60 * 60 * 1000));
    			mSecEcoulees -= heures * 60 * 60 * 1000;
    			minutes = Math.floor(mSecEcoulees / (60 * 1000));
    			mSecEcoulees -= minutes * 60 * 1000;
    			secondes = Math.floor(mSecEcoulees / 1000);
    			mSecEcoulees -= secondes * 1000;
    			millisecondes = mSecEcoulees;
    		}
    		
    		public function ajoutZero():void
    		{
    			
    			var zeros:String = '';
    			
    			if(secondes<10)
    			{
    				zeros = '0';
    			}
    			affichage.text = heures + ":" + minutes + ":" + zeros + secondes + ":" + millisecondes;
    
    		}
    		
    	}
    	
    }
    


    Voilà donc mon code. Donc mon problème devrait être dans la fonction ajoutZero.

    Merci de pouvoir m'aider!
    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2010 à 21:51:39

      Tu veux que 6 devienne 06 ?

      Dans ce cas, il suffit que tu ajoute un 0 devant les nombres <10.

      Je dirai un truc du genre
      var valeur:int = 6;
      if(valeur<10){
         var nb:String = "0"+ String(valeur);
      } else {
         var nb:String = valeur;
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        14 septembre 2010 à 22:09:06

        Dsl, sa fonctionne pas. J'ai essayer plusieurs choses avec ton code mais sa marche pas. C'est simple qu'y faut mettre un zero mais c'est comment le faire qui n'est pas si simple. Il faut que je réussisse à ajouter une chaine de texte avec un nombre.
        • Partager sur Facebook
        • Partager sur Twitter
          14 septembre 2010 à 22:12:51

          Si, copie colle ce code tel quel :

          var valeur:int = 6;
          var nb:String="";
          if(valeur<10){
             nb = "0"+ String(valeur);
          } else {
             nb = String(valeur);
          }
          
          trace(nb);
          


          ensuite, tu peux le modifier pour l'adapter à tes besoins ;)
          • Partager sur Facebook
          • Partager sur Twitter
            14 septembre 2010 à 22:35:21

            ok merci beaucoup. je comprend pourquoi sa fonctionnait pas. C'était à cause que j'appellais nulle part ma fonction ajoutZero. Maintenant je vais essayer d'adapter bien sa.
            • Partager sur Facebook
            • Partager sur Twitter
              15 septembre 2010 à 19:18:16

              Oublis pas de cliquer sur "Résolu" si ton sujet est résolu ;)
              • Partager sur Facebook
              • Partager sur Twitter
                18 septembre 2010 à 22:43:59

                [Edit : J'ai mal lu ton dernier message tu peux mettre ton sujet comme résolu ]
                • Partager sur Facebook
                • Partager sur Twitter
                  1 août 2018 à 18:26:41

                  Bonjour,

                  essaie ceci mais n'oublie pas de créer un champ appeler "chrono" ...

                  Voici le code en AS3 :

                  import flash.events.Event;

                  var save_hh; //Heures de départ du chrono

                  var save_mm; //Minutes de départ du chrono

                  var save_ss; //Secondes de départ du chrono

                  //var save_cc; //Millièmes de départ du chrono

                  //Fonction ajoutant un 0 aux dixaines inférieurs à 10.

                  function convert_dix(num)

                  {

                  num = String(num);

                  if(num.length == 1) { num = "0"+num; }

                  return num;

                  }

                  //Fonction ajoutant un ou deux 0 aux centièmes inférieurs à 100.

                  function convert_cent(num)

                  {

                  num = String(num);

                  if(num.length == 1) { num = "00"+num; }

                  if(num.length == 2) { num = "0"+num; }

                  return num;

                  }

                  function affichage_chrono(e:Event)

                  {

                  var d:Date = new Date(); //Enregistre le temps à l'instant t.

                  var hh = d.hours; //Récupère les heures à l'instant t

                  var mm = d.minutes; //Récupère les minutes à l'instant t

                  var ss = d.seconds; //Récupère les secondes à l'instant t

                  //var cc = d.milliseconds; //Récupère les millièmes à l'instant t

                  //Calcul le temps écoulé depuis le départ

                  //if(cc < save_cc) { cc = 1000 - save_cc + cc; ss--; }

                  //else { cc = cc - save_cc; }

                  if(ss < save_ss) { ss = 60 - save_ss + ss; mm--; }

                  else { ss = ss - save_ss; }

                  if(mm < save_mm) { mm = 60 - save_mm + mm; hh--; }

                  else { mm = mm - save_mm; }

                  if(hh < save_hh) { hh = 24 - save_hh + hh; }

                  else { hh = hh - save_hh; }

                  //Affiche le temps écoulé depuis le départ

                  chrono.text = convert_dix(hh) + ":" + convert_dix(mm) + ":" + convert_dix(ss);

                  }

                  function start_chrono()

                  {

                  var d:Date = new Date(); //Enregistre le temps au départ.

                  save_hh = d.hours; //Récupère les heures au départ

                  save_mm = d.minutes; //Récupère les minutes au départ

                  save_ss = d.seconds; //Récupère les secondes au départ

                  //save_cc = d.milliseconds; //Récupère les millièmes au départ

                  Jacky06450    A+

                  stage.addEventListener(Event.ENTER_FRAME, affichage_chrono); //Démarre le chronomètre

                  }

                  start_chrono();

                  • Partager sur Facebook
                  • Partager sur Twitter

                  AS3 - Problème chronomètre

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown