事件模型與回呼的比較

請考慮使用簡單的回呼來代替事件模型。

ActionScript 3.0 事件模型是以物件傳送的概念為基礎。事件模型為物件導向,並可最佳化重複使用程式碼的方式。 dispatchEvent() 方法會循序處理偵聽程式清單,並呼叫每個已註冊物件上的事件處理常式方法。但是,事件模型的缺點之一就是您可能會在應用程式的存留期間建立許多物件。

想像您必須傳送時間軸中的事件,並指示這是動畫序列的結尾。為了完成通知,您可以從時間軸的特定影格傳送事件,如下列程式碼的說明:

dispatchEvent( new Event ( Event.COMPLETE ) );

Document 類別可使用下面程式碼來偵聽此事件:

addEventListener( Event.COMPLETE, onAnimationComplete );

雖然這個方法是正確的,但使用原生事件模型與使用傳統回呼函數比較起來,原生事件模型可能較為緩慢且耗用較多的記憶體。事件物件必須建立並配置於記憶體中,而這會降低效能。例如,偵聽 Event.ENTER_FRAME 事件時,會針對事件處理常式在每個影格上建立新的事件物件。顯示物件的效能可能特別緩慢,因為捕捉和反昇階段在執行複雜的顯示清單時,可能需要較多的資源。