Gebeurtenismodel en callbacks

U kunt eenvoudige callbacks gebruiken in plaats van het gebeurtenismodel.

Het ActionScript 3.0-gebeurtenismodel is gebaseerd op het verzenden van objecten. Het gebeurtenismodel is objectgericht en geoptimaliseerd voor hergebruik van code. De methode dispatchEvent() herhaalt de lijst met listeners en roept de gebeurtenishandlermethode aan voor elk geregistreerd object. Een van de nadelen van het gebeurtenismodel is echter dat u vele objecten moet maken tijdens de levensduur van uw toepassing.

Stel u voor dat u een gebeurtenis moet verzenden vanaf de tijdlijn om het einde van een animatiereeks aan te geven. U kunt dit bereiken door een gebeurtenis te verzenden vanuit een specifiek frame in de tijdlijn, zoals in het volgende codevoorbeeld wordt geïllustreerd:

dispatchEvent( new Event ( Event.COMPLETE ) );

De Document-klasse kan met behulp van de volgende coderegel naar deze gebeurtenis luisteren:

addEventListener( Event.COMPLETE, onAnimationComplete );

Deze benadering is in principe correct, maar het gebruik van het interne gebeurtenismodel verloopt wellicht trager en verbruikt wellicht meer geheugen dan een traditionele callbackfunctie. Gebeurtenisobjecten moeten namelijk in het geheugen worden gemaakt en toegewezen en dat leidt tot tragere prestaties. Als u bijvoorbeeld naar de gebeurtenis Event.ENTER_FRAME luistert, wordt er op elk frame voor de gebeurtenishandler een nieuw gebeurtenisobject gemaakt. Vooral weergaveobjecten zijn aanzienlijk trager vanwege de vastleg- en terugkoppelingsfasen die lang kunnen duren in geval van een complexe weergavelijst.