1. 程式人生 > >as3 addEventListener各引數詳解

as3 addEventListener各引數詳解

轉自:http://blog.csdn.net/neaudiy/article/details/6237536

public function addEventListener(

                             type:String,    //動作型別

                             listener:Function,  //呼叫的方法

                             useCapture:Boolean = false,  //確定偵聽器是運行於捕獲階段、目標階段還是冒泡階段。 如果將 useCapture 設定為 true,則偵聽器只在捕獲階段處理事件,而不在目標或冒泡階段處理事件。 如果 useCapture 為 false,則偵聽器只在目標或冒泡階段處理事件,用這個引數搭配stopPropagation()/stopImmediatePropagation()可以做些很偏門的事

                             priority:int = 0, priority引數用於設定該事件偵聽器的優先順序。預設值為0,但你可以將它設定為負整數值或正整數值。將優先執行此數字較大的事件偵聽器。對於具有相同優先順序的事件偵聽器,則按它們的新增順序執行,因此將優先執行較早新增的偵聽器                             useWeakReference:Boolean = false

可以使用useWeakReference引數來指定對偵聽器函式的引用是弱引用還是正常引用。通過將此引數設定為true,可避免偵聽器函式在不再需要時仍然存在於內在中的情況。Flash Player使用一項稱為“垃圾回收”的技術從內在中清除不再使用的物件。如果不存在對某個物件的引用,則該物件被視為不再使用。垃圾回收器不考慮弱引用,這意味著如果偵聽器函式僅具有指向它的弱引用,則符合垃圾回收條件

                             ):void

事件流:


stopPropagation() 與 stopImmediatePropagation()  都能阻止後續的偵聽行為,即能阻擋掉事件流中事件的冒泡,簡而言之就是讓後面的偵聽都不執行。

兩者的區別在於,stopImmediatePropagation 會讓當前物件的次優先順序的所有監聽都不執行,

一般情況下兩者用哪個都可以,但比如下面程式碼,這種使用stopImmediatePropagation()更有效