Envisagez d’utiliser de simples rappels plutôt que le modèle d’événement.
Le modèle d’événement d’ActionScript 3.0 est fondé sur le concept de distribution d’objets. Il est orienté objet et optimisé pour la réutilisation du code. La méthode
dispatchEvent()
effectue une boucle dans la liste d’écouteurs et appelle la méthode du gestionnaire d’événement sur chaque objet enregistré. Ce modèle présente cependant un inconvénient : vous risquez en effet de créer un grand nombre d’objets tout au long de la vie de votre application.
Imaginons que vous devez distribuer un événement à partir du scénario, pour indiquer la fin d’une séquence d’animation. Pour accomplir la notification, vous pouvez distribuer un événement à partir d’une image spécifique du scénario, comme illustré dans le code suivant :
dispatchEvent( new Event ( Event.COMPLETE ) );
La ligne de code suivante permet à la classe Document d’écouter cet événement :
addEventListener( Event.COMPLETE, onAnimationComplete );
Bien que cette technique soit correcte, l’utilisation du modèle d’événement natif peut être plus lente et exiger plus de mémoire qu’une fonction de rappel classique. Il est nécessaire de créer des objets d’événement et de les affecter en mémoire, ce qui ralentit les performances. Lorsque vous écoutez l’événement Event.ENTER_FRAME, par exemple, un objet d’événement est créé sur chaque image pour le gestionnaire d’événement. Les performances des objets d’affichage peuvent être particulièrement lentes, en raison des phases de capture et de propagation, ce qui se traduit par une forte sollicitation des ressources si la liste d’affichage est complexe.