Versies van ActionScript vóór ActionScript 3.0 kennen een aantal verschillende manieren om gebeurtenissen af te handelen:
Gebeurtenishandlers on() die direct op instanties Button en MovieClip kunnen worden geplaatst
Handlers onClipEvent() die direct op instanties MovieClip kunnen worden geplaatst
Eigenschappen van callback-functies, zoals XML.onload en Camera.onActivity
Gebeurtenislisteners die u registreert met de methode addListener()
De klasse UIEventDispatcher waarbij het DOM-gebeurtenismodel gedeeltelijk is geïmplementeerd
Al deze mechanismen kennen hun eigen voordelen en beperkingen. De handlers on() en onClipEvent() zijn eenvoudig te gebruiken. Het onderhoud van projecten is echter moeilijker, omdat code die direct op knoppen en filmclips is geplaatst, vaak lastig te vinden is. Callback-functies zijn ook eenvoudig te implementeren, maar u kunt slechts één callback-functie per gebeurtenis gebruiken. Gebeurtenislisteners zijn moeilijker te implementeren. U moet niet alleen een listenerobject en -functie maken, maar ook de listener registreren bij het object waardoor de gebeurtenis wordt gegenereerd. Door deze verhoogde overhead kunt u echter wel verschillende listenerobjecten maken en deze allemaal voor dezelfde gebeurtenis registreren.
Bij de ontwikkeling van componenten voor ActionScript 2.0 is een ander gebeurtenismodel ontstaan. Dit nieuwe model, dat in de klasse UIEventDispatcher is opgenomen, was gebaseerd op een subset van de DOM Events Specification. Voor ontwikkelaars die bekend zijn met gebeurtenisafhandeling voor componenten, is de overgang naar het nieuwe ActionScript 3.0-gebeurtenismodel relatief eenvoudig.
Helaas kent de syntaxis die door de verschillende gebeurtenismodellen wordt gebruikt, zowel overlap als verschillen. In ActionScript 2.0 kunnen sommige eigenschappen, zoals TextField.onChanged, als callback-functie maar ook als gebeurtenislistener worden gebruikt. Voor de syntaxis voor het registreren van listenerobjecten is het echter van belang of u een van de zes klassen gebruikt die ondersteuning bieden voor listeners, of de klasse UIEventDispatcher. Voor de klassen Key, Mouse, MovieClipLoader, Selection, Stage en TextField kunt u de methode addListener() gebruiken, maar voor gebeurtenisafhandeling voor componenten gebruikt u de methode addEventListener().
Een andere complicatie bij het gebruik van verschillende gebeurtenisafhandelingsmodellen is dat het bereik van de gebeurtenishandlerfunctie veel kan verschillen, afhankelijk van het gebruikte mechanisme. Met andere woorden, de betekenis van het trefwoord this is niet consistent tussen de systemen voor gebeurtenisafhandeling.