2009-10-14 4 views
1

J'ai un constructeur dans une classe qui fait une sorte de logique:Une bonne façon d'expédier/gérer le message dans actionscript 3?

public function Constructor() { 
    if some condition { 
     // load some resource from the internet, dispatch message when done 
    } 
    else { 
     // finish up, dispatch message now 
     dispatchEvent(new TestEvent(...)); 
    } 
} 

et une classe qui utilise:

obj = new Constructor(); 
obj.addEventListener(...); // Listens to the above event 

Je courais des ennuis parce que si « une condition » ne arrive, il distribue immédiatement l'événement, mais la deuxième classe n'entendra pas l'événement car il s'exécute avant la méthode addEventListener.

Répondre

2

Simple. Ne pas déclencher d'événements dans un constructeur. Construisez l'objet, accrochez vos écouteurs puis appelez une méthode d'initialisation qui contient le code de déclenchement de l'événement.

EDIT: Vous pouvez également, si vous le devez absolument, transmettre la méthode de rappel en tant que param au constructeur et ajouter l'écouteur dans le constructeur. Je préfère la première méthode, car elle est moins obfusquée.

+0

Si simple/stupide. Merci! – Timmy