Model zdarzenia i wywołania zwrotne

Zamiast stosować model zdarzenia należy zastanowić się nad zastosowaniem prostych wywołań zwrotnych.

Model zdarzeń programu ActionScript 3.0 jest oparty na koncepcji wywoływania obiektów. Model zdarzeń jest zorientowany obiektowo i zoptymalizowany pod względem ponownego wykorzystania kodu. Metoda dispatchEvent() wykonuje pętlę po detektorach z listy i wywołuje procedurę obsługi zdarzeń na każdym zarejestrowanym obiekcie. Jedną z wad modelu zdarzeń jest to, że w cyklu życia aplikacji istnieje prawdopodobieństwo utworzenia wielu obiektów.

Wyobraźmy sobie wywołanie zdarzenia z osi czasu z powiadomieniem o końcu sekwencji animacji. W celu uzyskania powiadomienia można wywołać zdarzenie z konkretnej klatki na osi czasu, co ilustruje poniższy kod:

dispatchEvent( new Event ( Event.COMPLETE ) );

Klasa Document może wykryć to zdarzenie za pośrednictwem następującego wiersza kodu:

addEventListener( Event.COMPLETE, onAnimationComplete );

Mimo, że takie podejście jest poprawne, jednak zastosowanie macierzystego modelu zdarzeń może spowodować działanie wolniejsze niż w przypadku zastosowania tradycyjnej funkcji wywołania zwrotnego. Obiekty zdarzeń muszą być tworzone i przydzielane w pamięci, co powoduje zmniejszenie szybkości działania. Na przykład: podczas wykrywania zdarzenia Event.ENTER_FRAME w każdej klatce tworzony jest nowy obiekt zdarzenia dla procedury obsługi zdarzeń. Szybkość działania może być szczególnie niska dla obiektów wyświetlanych z powodu faz przechwytywania i propagacji, co może być kosztowne, jeśli lista wyświetlania jest złożona.