Avoir l’autocompletion sur ses propres événements
Oui, non , je ne suis pas mort.
J'ai juste (encore) changer de boulot.
Je suis maintenant dans un grosse entreprise de développement de logiciel.
Le sujet du jour :
Faire que Flex Builder 3 (ça doit fonctionner aussi pour le 2) nous affiche un beau menu listant les évènements émis par une classe (z'avez vu comment j'ai résisté à l'idée de mettre un anglicisme du style "dispatchés" ou "broadcastés", pourtant c'est dur).
Il le fait déjà pour les évènements par défaut, mais il peut aussi afficher les votre.
Il faut pour cela respecter un certain nombre de conditions :
1- Le type de l'évènement doit être une constante de sa propre classe.
package test
{
import flash.events.Event;
public class TestEvent extends Event
{
public static const TEST_EVENT : String = "testEvent";
public function TestEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
Ceci nous oblige a avoir nos types stockés dans chaque classe. Pas possible de faire une liste d'enum pour plusieurs types d'évènements différents. Enfin, celà reste possible mais nous obligerait à multiplier les classes :
package test
{
import flash.events.Event;
public class TestEvent extends Event
{
public static const TEST_EVENT : String = EventEnum.TEST_EVENT;
public function TestEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}
Un peu redondant...
2- La classe émettrice de l'événement doit contenir un metadata Event.
package test
{
import flash.utils.setTimeout;
import mx.core.UIComponent;
[Event(name="testEvent",type="test.TestEvent")]
public class TestDispatcher extends UIComponent
{
public function TestDispatcher()
{
super();
setTimeout( dispatchEvent, 100, new TestEvent( TestEvent.TEST_EVENT ) );
}
}
}
[Event(name="testEvent",type="test.TestEvent")] est le metadata Event complet.
La chaine "testEvent" correspond bien a une constante de la classe TestEvent. Ainsi Flex Builder saura retrouver le nom de cette constante pour vous l'afficher :
Et voilà, le tour est joué ![]()

Hello
Dans FDT c’est tout de même plus simple
EKA+
Et oui, mais FDT n’est pas partout loin de là (et c’est bien dommage)…
D’ailleurs je ne sais même pas comment FDT gère l’autocompletion des évènements.