一。三個階段:捕獲(父->子),目標(觸發事件流的對象),冒泡(子->父:具體的處理事件應該是在這個過程),所以如果父容器和子容器都有註冊事件監聽器,那麼觸發事件的書序應該顯示子,後世父,因為在冒泡是觸發的事件。前提是事件確實觸發在子物件上,比如一個button上有個textfield,都註冊了滑鼠點擊事件,如果點擊了textfield,那麼兩個事件都會觸發,不過textfield在前,button在後而已。(註:不是每個事件都有三個階段,例如enterframe事件就沒有,會直接調度到目標節點,並不參與捕獲階段和冒泡階段)。
二。
if (event.eventPhase == EventPhase.AT_TARGET)
{
myFunc();
}
可以指定到底哪個階段來具體觸發函數。
currentTarget屬性包含對當前正在處理事件對象的對象的引用。就是添加該事件接聽程式的對象。
三。阻止冒泡:有時只想當前的對象響應事件,而顯示對象列表的其他顯示對象不響應事件,則需要阻止冒泡。
如果某對象的一個事件同時添加多個監聽,stopPropagation將把該事件註冊的所有監聽處理函數執行完後,再阻止該事件繼續向上冒泡;而 stopImmediatePropagation方法將本次處理函數執行完後就立即阻止事件繼續向上冒泡(即同一事件的其它監聽函數將不會執行,哪怕是同一個對象註冊的多個相同的事件的響應器)。
四。取消預設行為:
許多事件都有預設執行的關聯線為。例如,如果使用者在文字欄位中鍵入一個字元,則預設行為就是在文字欄位中顯示該字元。由於可以取消 TextEvent.TEXT_INPUT 事件的預設行為,因此您可以使用
preventDefault() 方法來防止顯示該字元。
不可取消行為的一個樣本是與 Event.REMOVED 事件關聯的預設行為,只要 Flash Player 從顯示列表中刪除顯示對象,就會產生該事件。由於無法取消預設行為(刪除元素),因此
preventDefault() 方法對此預設行為無效。
您可以使用 Event.cancelable 屬性來檢查是否可以防止與特定事件關聯的預設行為。如果 Event.cancelable 的值為
true,則可以使用 preventDefault() 來取消事件;否則,preventDefault() 無效。
五。添加事件接聽程式的參數(addEventListener):
1.useCapture 參數,可以控制接聽程式將處於活動狀態
的事件流階段。如果 useCapture 設定為 true,接聽程式將在事件流的捕獲階段成為活動狀
態。如果 useCapture 設定為 false,接聽程式將在事件流的目標階段和冒泡階段處於活動狀
態。要在事件流的所有階段偵聽某一事件,您必須調用 addEventListener() 兩次,第一次
調用時將 useCapture 設定為 true,第二次調用時將 useCapture 設定為 false。
2.可以使用 useWeakReference 參數來指定對接聽程式函數的引用是弱引用還是正常引用。通過
將此參數設定為 true,可避免接聽程式函數在不再需要時仍然存在於記憶體中的情況。Flash
Player 使用一項稱為“記憶體回收”的技術從記憶體中清除不再使用的對象。如果不存在對某個
對象的引用,則該對象被視為不再使用。記憶體回收行程不考慮弱引用,這意味著如果接聽程式函
數僅具有指向它的弱引用,則符合記憶體回收條件。
六。實現IEventDispatcher介面,可以自訂事件。