原型
public override function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
參數
1、type:String
事件的類型。
2、listener:Function
偵聽到事件後處理事件的函式。 此函式必須接受 Event 對象作為其唯一的參數,並且不能返回任何結果,如以下示例所示: 訪問修飾符function 函式名(evt:Event):void
3、useCapture:Boolean (default = false)
這裡牽扯到“事件流”的概念。偵聽器在偵聽時有三個階段:捕獲階段、目標階段和冒泡階段。順序為:捕獲階段(根節點到子節點檢查是否調用了監聽函式)→目標階段(目標本身)→冒泡階段(目標本身到根節點)。此處的參數確定偵聽器是運行於捕獲階段、目標階段還是冒泡階段。 如果將 useCapture 設定為 true,則偵聽器只在捕獲階段處理事件,而不在目標或冒泡階段處理事件。 如果useCapture 為 false,則偵聽器只在目標或冒泡階段處理事件。 要在所有三個階段都偵聽事件,請調用兩次 addEventListener,一次將 useCapture 設定為 true,第二次再將useCapture 設定為 false。
4、priority:int (default = 0)
事件偵聽器的優先權。 優先權由一個帶符號的 32 位整數指定。 數字越大,優先權越高。 優先權為 n 的所有偵聽器會在優先權為 n -1 的偵聽器之前得到處理。 如果兩個或更多個偵聽器共享相同的優先權,則按照它們的添加順序進行處理。 默認優先權為 0。
5、useWeakReference:Boolean (default = false)
確定對偵聽器的引用是強引用,還是弱引用。 強引用(默認值)可防止您的偵聽器被當作垃圾回收。 弱引用則沒有此作用。
注意
使用EventDispatcher對象註冊事件偵聽器對象,以使偵聽器能夠接收事件通知。 可以為特定類型的事件、階段和優先權在顯示列表的所有節點上註冊事件偵聽器。
成功註冊一個事件偵聽器後,無法通過額外調用addEventListener()來更改其優先權。要更改偵聽器的優先權,必須首先調用 removeListener()。 然後,可以使用新的優先權再次註冊該偵聽器。
例子
添加監聽事件
function Go()
{
//...
}
document.getElementById("testButton").addEventListener("click", Go, false);
或者 listener 直接就是函式
document.getElementById("testButton").addEventListener("click", function () { ... }, false);
刪除監聽事件
document.getElementById("testButton").removeEventListener("click", Go );
參數
很多時候我們不但需要動態添加事件, 也需要將此事件的回調函式增加一些參數,來滿足我們的需求,而自帶的
addEventListener方法 默認只有一個參數event事件類型,此類問題曾經困擾過我很長時間 .
diqye.html5.GpsDir.prototype._addClickEvent =function(_element,
callBack, //回調函式
//多出來的參數
gpsDir,
id) {
var eventCallBack = callBack;
//********************************************************
eventCallBack = function(event) {
//console.log("enter method [eventCallBack] ");
callBack(gpsDir,id);//這裡就可以傳自定義的參數了
}
//********************************************************
if(_element.addEventListener){
_element.addEventListener("click", eventCallBack);
}else if(_element.attchEvent) {
_element.attchEvent("onclick", eventCallBack);
}else if(_element.click) {
_element.click = eventCallBack;
}else{
throw "your browse not support this library";
}
}
詳細資訊請參考這裡