2009-10-13 2 views
3

Dire que j'ai deux classes qui se prolongent Event:Les identificateurs de type d'événement personnalisés dans as3 doivent-ils être uniques?

public class CustomEventOne extends Event 
{ 
    public static const EVENT_TYPE_ONE:String = "click"; 

    //... rest of custom event 

et

public class CustomEventTwo extends Event 
{ 
    public static const EVENT_TYPE_TWO:String = "click"; 

    //... rest of custom event 

Est-il acceptable que les deux déclarent un type d'événement en utilisant la même chaîne "click"?

Ou les identificateurs de type d'événement doivent-ils être uniques dans toute l'application?

Répondre

5

Vous pouvez certainement rencontrer des collisions avec ceci. Cela sera très évident si vous utilisez des bulles, ou écoutez les deux événements sur le même objet. À la base, les auditeurs d'événements écoutent une chaîne. Il n'y a pas de typage fort, juste un if (string == type) vérifier (c'est plus simple, mais essentiellement ce qui se passe).

il serait bon de nommer ces types d'événements:

public static const EVENT_TYPE_ONE:String = "eventTypeOne"; 

Si vous utilisez de tout [Event(name="eventTypeOne", type="com.me.events.CustomEvent")] cette syntaxe est essentielle.

+0

Merci pour la clarification - J'ai toujours fait des événements uniques, je demande par curiosité plus que toute autre chose ... – Reuben

0

Si votre code écoute un événement CustomEventOne sur un objet en appelant addEventListener avec CustomEventOne.EVENT_TYPE_ONE, ce gestionnaire d'événements sera appelé lorsque l'objet envoie soit CustomEventOne.EVENT_TYPE_ONE ou CustomEventTwo.EVENT_TYPE_TWO que les deux sont essentiellement "click". Comme l'a dit Joel, les objets écoutent les types d'événements qui sont des chaînes simples.

Questions connexes