2013-04-15 3 views
0

J'essaye de distribuer l'événement chaque seconde de la classe de Mytimer et attraper l'événement de la classe principale. J'ai déclaré la variable "sus" comme entier = 10. Je n'ai rien pour l'instant, pas de sortie, rien. Un peu d'aide s'il vous plaît!AS3 Comment envoyer l'événement timer à une autre classe?

Ceci est Mytimer.as

private function onUpdateTime(event:Event):void 
    { 

     nCount--; 
     dispatchEvent(new Event("tickTack", true)); 
     //Stop timer when it reaches 0 
     if (nCount == 0) 
     { 
      _timer.reset(); 
      _timer.stop(); 
      _timer.removeEventListener(TimerEvent.TIMER, onUpdateTime); 
      //Do something 
     } 
    }  

Et Main.as je:

public function Main() 
    { 
     // constructor code 
     _timer = new MyTimer ; 
     stage.addEventListener("tickTack", ontickTack); 
    } 

    function ontickTack(e:Event) 
    { 
     sus--; 
     trace(sus); 
    }  

Répondre

2

Dans votre Main.as, vous avez ajouté l'auditeur à la scène, pas votre minuterie. Cette ligne:

stage.addEventListener("tickTack", ontickTack); 

devrait ressembler à ceci:

_timer.addEventListener("tickTack", ontickTack); 

Mais ActionScript a déjà une classe Timer qui ressemble a toutes les fonctionnalités dont vous avez besoin. Pas besoin de réinventer la roue. Jetez un oeil à la documentation for the Timer class.

Dans votre principale, vous pouvez simplement dire:

var count:int = 10; // the number of times the timer will repeat. 
_timer = new Timer(1000, count); // Creates timer of one second, with repeat. 
_timer.addEventListener(TimerEvent.TIMER, handleTimerTimer); 
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleTimerTimerComplete); 

ajoutez simplement vos méthodes de gestionnaire. Vous n'avez pas besoin d'utiliser les deux. Souvent, l'événement TIMER est suffisant. Quelque chose comme ceci:

private function handleTimerTimerComplete(e:TimerEvent):void 
{ 
    // Fires each time the timer reaches the interval. 
} 

private function handleTimerTimer(e:TimerEvent):void 
{ 
    // Fired when all repeat have finished. 
} 
+0

Merci, merci. C'est ce que je cherchais. Merci pour la réponse rapide. Je fais cela parce que je veux garder mon minuteur dans une classe séparée, donc je peux accéder à son timing à tout moment. J'ai trouvé cela très pratique. Merci Adam – irnik

+0

Ne vous inquiétez pas @irnik, n'oubliez pas de marquer la réponse comme correcte si vous avez trouvé ce que vous voulez. –

Questions connexes