ActionScript-versioner före ActionScript 3.0 erbjuder en rad olika sätt att hantera händelser på, bland annat följande:
on()-händelsehanterare som kan placeras direkt i Button- och MovieClip-instanser
onClipEvent()-hanterare som kan placeras direkt i MovieClip-instanser
Återkallningsfunktionsegenskaper som XML.onload och Camera.onActivity
Händelseavlyssnare som du registrerar med hjälp av metoden addListener()
Klassen UIEventDispatcher som delvis implementerade DOM-händelsemodellen.
Var och en av dessa mekanismer har sin egen uppsättning fördelar och begränsningar. Hanterarna on() och onClipEvent() är enkla att använda, men gör senare underhåll av projektet svårare eftersom kod som har placerats direkt i knappar och filmklipp kan vara svåra att hitta. Återkallningsfunktioner är också enkla att implementera, men begränsar dig så att du bara kan använda en återkallningsfunktion för en given händelse. Händelseavlyssnare är svårare att implementera eftersom de inte bara kräver att ett avlyssnarobjekt och en avlyssnarfunktion skapas, utan även kräver att avlyssnaren registreras med objektet som genererar händelsen. Det här extraarbetet gör dock att du kan skapa flera avlyssnarobjekt och registrera dem alla för samma händelse.
Utvecklingen av komponenter för ActionScript 2.0 gav upphov till ytterligare en händelsemodell. Den nya modellen, i form av klassen UIEventDispatcher, grundades på en deluppsättning av DOM-händelsespecifikationen. Utvecklare som är insatta i händelsehantering kommer därför inte att ha några större problem att gå över till den nya ActionScript 3.0-händelsemodellen.
Tyvärr sammanfaller syntaxen som används av de olika händelsemodellerna på olika sätt, och skiljer sig åt på andra sätt. I ActionScript 2.0 kan till exempel vissa egenskaper, som TextField.onChanged, användas antingen som en återkallningsfunktion eller som en händelseavlyssnare. Syntaxen för att registrera avlyssnarobjekt skiljer sig däremot åt beroende på om du använder någon av de sex klasser som stöder avlyssnare eller klassen UIEventDispatcher. För klasserna Key, Mouse, MovieClipLoader, Selection, Stage och TextField använder du metoden addListener(), men för komponenthändelsehantering använder du en metod som heter addEventListener().
En annan svårighet som de olika händelsehanteringsmodellerna introducerade var att omfånget på händelsehanteringsfunktionen varierade avsevärt beroende på vilken mekanism som användes. Innebörden av nyckelordet this var med andra ord inte konsekvent mellan de olika händelsehanteringssystemen.