精通Flex 3.0――4.8.4 事件監聽管理

 在ActionScript 3.0中通過接口IEventDispatcher來管理事件監聽函數。Flash Palyer中的EventDispatcher類擴展了此接口。EventDispatcher作爲基類爲所有類提供服務,這些類可以使事件目標類或者是事件流中的一部分。例如,DisplayObject類繼承至EventDispatcher,這也就意味着任何DisplayObject中的對象都可以訪問IEventDispatcher 中定義的方法。接口IEventDispatcher中定義了五個方法,代碼如下。參數說明如表4.10所示。

package flash.events

Handling Events

{

         public interface IEventDispatcher

{

         function addEventListener(eventName:String,listener:Object,useCapture:Boolean=false,priority:Integer=0,

useWeakReference:Boolean=false):Boolean;

         function removeEventListener(eventName:String,listener:Object,useCapture:Boolean=false):Boolean;

         function dispatchEvent(eventObject:Event):Boolean;

         function hasEventListener(eventName:String):Boolean;

         function willTrigger(eventName:String):Boolean;

}

}

接口類IEventDispatcher中方法介紹

名稱

參數

說明

public function addEventListener():void

type:String

listener:function

useCapture:Boolean=false

priority:Integer=0

useWeakReference:Boolean=false

此方法的作用是爲EventDispatcher註冊一個事件監聽對象。這個方法的5個參數中,typelistener是必須的參數。

type代表的含義是指定事件的類型。

listener代表的含義是當事件發生的時候指定監聽事件的函數。

useCapture指定監聽工作是在獲取階段進行還是在目標階段和起泡階段進行,默認值爲false,當useCapture設置爲ture時指定監聽器處理事件僅僅事件流中的獲取階段執行,當useCapture設置爲false時指定監聽器處理事件在目標階段或者起泡階段進行,如果想在三個階段都可以進行事件的監聽,那麼就需要調用addEventListener()方法兩次,第一次將useCapture屬性設置爲true,第二次將這個屬性的值設置爲false

Priority屬性代表的含義是事件監聽的優先級。這個屬性的類型爲整數類型,默認值爲0,值越高,優先級越高,多個事件監聽優先級相同的情況下,按照這些事件監聽的添加順序進行處理。

useWeakReference屬性代表監聽器的引用是強引用,還是弱應用,強引用方式必須通過garbage-collected(垃圾回收器)進行銷燬,弱關係引用不需要,此屬性的默認值爲false

public function dispatcherEvent():Boolean

event:Event

此方法的作用是發派一個事件對象到事件流中。

event代表的含義是事件對象。

public function hasEventListener():Boolean

type:String

此方法的返回值如果是ture表示在指定的顯示對象中爲指定的事件類型能夠找到監聽器。

type代表的含義是事件的類型。

public function removeEventListener():void

type:String

listener:function

useCapture:Boolean=false

此方法的作用是從EventDispatcher移除監聽器。如果此EventDispatcher對象中不包含任何監聽器,那麼調用此方法沒有任何效果。

type代表的含義是指定事件的類型。

listener代表的含義是當事件發生的時候指定監聽事件的函數。

useCapture代表的含義是指定監聽器是否在獲取階段或者目標和起泡階段被註冊。如果監聽器在三個階段都被註冊,那麼就要調用兩次removeEventListener(),第一次調用時候設置useCapture值爲true,第二次設置爲false。方法的默認值爲false

public function willTrigger():Boolean

type:String

willTrigger()的作用與hasEventListener()方法很相似,如果在指定的顯示對象中爲指定的事件類型能夠找到監聽器,這個方法返回值爲ture,這個方法還可以去檢查在整個事件流中對於指定的事件類型是否能夠找到監聽器。

type代表的含義是指定事件的類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章