對AS3.0事件機制的理解

來源:互聯網
上載者:User

一。三個階段:捕獲(父->子),目標(觸發事件流的對象),冒泡(子->父:具體的處理事件應該是在這個過程),所以如果父容器和子容器都有註冊事件監聽器,那麼觸發事件的書序應該顯示子,後世父,因為在冒泡是觸發的事件。前提是事件確實觸發在子物件上,比如一個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介面,可以自訂事件。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.