flex事件機制3:事件監聽器

來源:互聯網
上載者:User

事件監聽器同樣要繼承EventDispatcher類,這樣就可以使用addEventListener方法:

public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

使用 EventDispatcher 對象註冊事件接聽程式對象,以使接聽程式能夠接收事件通知。 可以為特定類型的事件、階段和優先順序在顯示列表的所有節點上註冊事件接聽程式。
成功註冊一個事件接聽程式後,無法通過額外調用 addEventListener() 來更改其優先順序。 要更改接聽程式的優先順序,必須首先調用 removeListener()。 然後,可以使用新的優先順序再次註冊該接聽程式。
請記住,註冊該接聽程式後,如果繼續調用具有不同 type 或 useCapture 值的addEventListener(),則會建立單獨的接聽程式註冊。 例如,如果首先註冊 useCapture 設定為 true 的接聽程式,則該接聽程式只在捕獲階段進行偵聽。 如果使用同一個接聽程式對象再次調用 addEventListener(),並將 useCapture 設定為 false,那麼便會擁有兩個單獨的接聽程式:一個在捕獲階段進行偵聽,另一個在目標和冒泡階段進行偵聽。

不能只為目標階段或冒泡階段註冊事件接聽程式。 這些階段在註冊期間是成對出現的,因為冒泡階段只適用於目標節點的始祖。

如果不再需要某個事件接聽程式,可調用 removeEventListener() 刪除它,否則會產生記憶體問題。 由於記憶體回收行程不會刪除仍包含引用的對象,因此不會從記憶體中自動刪除使用登入事件接聽程式的對象。

複製 EventDispatcher 執行個體時並不複製其中附加的事件接聽程式。 (如果新近建立的節點需要一個事件接聽程式,必須在建立該節點後附加該接聽程式)。 但是,如果移動 EventDispatcher 執行個體,則其中附加的事件接聽程式也會隨之移動。

如果在正在處理事件的節點上註冊事件接聽程式,則不會在當前階段觸發事件接聽程式,但會在事件流的稍後階段觸發,如冒泡階段。

如果從正在處理事件的節點中刪除事件接聽程式,則該事件接聽程式仍由當前操作觸發。 刪除事件接聽程式後,決不會再次調用該事件接聽程式(除非再次註冊以備將來處理)。

參數
    type:String — 事件的類型。
 
    listener:Function — 處理事件的接聽程式函數。 此函數必須接受 Event 對象作為其唯一的參數,並且不能返回任何結果,如以下樣本所示:

function(evt:Event):void

函數可以有任何名稱。
 
    useCapture:Boolean (default = false) — 確定接聽程式是運行於捕獲階段、目標階段還是冒泡階段。 如果將 useCapture 設定為 true,則接聽程式只在捕獲階段處理事件,而不在目標或冒泡階段處理事件。 如果 useCapture 為 false,則接聽程式只在目標或冒泡階段處理事件。 要在所有三個階段都偵聽事件,請調用兩次 addEventListener,一次將 useCapture 設定為 true,第二次再將 useCapture 設定為 false。
 
    priority:int (default = 0) — 事件接聽程式的優先順序。 優先順序由一個帶符號的 32 位整數指定。 數字越大,優先順序越高。 優先順序為 n 的所有接聽程式會在優先順序為 n -1 的接聽程式之前得到處理。 如果兩個或更多個接聽程式共用相同的優先順序,則按照它們的添加順序進行處理。 預設優先順序為 0。
 
    useWeakReference:Boolean (default = false) — 確定對接聽程式的引用是強引用,還是弱引用。 強引用(預設值)可防止您的接聽程式被當作記憶體回收。 弱引用則沒有此作用。

類層級成員函數不屬於記憶體回收的對象,因此可以對類層級成員函數將 useWeakReference 設定為 true 而不會使它們受記憶體回收的影響。 如果對作為嵌套內建函式的接聽程式將 useWeakReference 設定為 true,則該函數將被作為記憶體回收並且不再是永久函數。 如果建立對該內建函式的引用(將該函數儲存到另一個變數中),則該函數將不作為記憶體回收並仍將保持永久。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.