2010-10-07 4 views
1

J'essaie de créer un projet flex4 simple qui implique des temporisations qui déclenchent d'autres fonctions.Flex 4 temporisations continuent de se déclencher

Je n'ai pas beaucoup d'expérience avec Action Script et encore moins avec les événements timer.

Voici un peu de mon code, il semble fonctionner pour la plupart, mais vous lignes que je suis en ajoutant le score total (score = score +1;) semble juste continuer à ajouter et à ajouter quand je teste L'application. Je pense que c'est parce que les minuteurs continuent à tirer la fonction mais je ne suis pas sûr.

  private var score:int = 0; 

     private function submit():void { 
      this.currentState = 'loading'; 
      var timer:Timer = new Timer(2200); 
      timer.addEventListener(TimerEvent.TIMER, removeLoading); 
      timer.start(); 
     } 

     private function removeLoading(event:TimerEvent):void{ 
      removeloading.play(); 
      var timer1:Timer = new Timer(1000); 
      timer1.addEventListener(TimerEvent.TIMER, viewResults); 
      timer1.start(); 
      this.currentState = 'results'; 
     } 

     private function viewResults(event:TimerEvent):void{ 

      if (q1_t.selected == true){ 
       answer1m.text = 'You Answer the Question Correctly.'; 
       score = score +1; 

      } else { 
       answer1m.text ='The Correct answer was: '+ q1_t.label; 
      } 

      if (q2_f.selected == true){ 
       answer2m.text = 'You Answer the Question Correctly.'; 
       score = score +1; 

      } else { 
       answer2m.text ='The Correct answer was: '+ q2_f.label; 
      } 

      finalscore.text = score.toString(); 
     } 

Répondre

2

J'ai donc fait un peu plus de recherches et il s'avère que je n'avais pas inclus le paramètre second timer.

Le deuxième paramètre est le nombre de fois que l'événement TimerEvent.TIMER sera distribué avant l'arrêt. Si vous définissez le deuxième paramètre sur 0 (zéro) ou si vous l'omettez complètement, le temporisateur s'exécutera indéfiniment (ou jusqu'à ce que vous appeliez la méthode stop() sur l'instance du temporisateur.)

Comme je souhaite uniquement exécuter l'événement une fois que besoin d'ajouter 1.

de ceci:

var timer:Timer = new Timer(2200); 

à ceci:

var timer:Timer = new Timer(2200,1);