addEventListener

addEventListener是一個偵聽事件並處理相應的函式。

原型

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";

}

}

詳細資訊請參考這裡

相關詞條

相關搜尋

熱門詞條

聯絡我們