說明

在建立 Event 物件時,Event 類別可以當做基底類別來使用,而當發生事件時,Event 物件會被當做參數傳遞至事件偵聽程式。您可以在事件偵聽程式函數中使用方法,以修改事件物件的行為。例如,您可以將目前的事件偵聽程式設為最後一個偵聽程式,藉由呼叫 stopPropagation()stopImmediatePropagation() 方法來處理事件。

語法

new flwebgl.events.Event(type, bubbles)

參數

名稱 類型說明
type
字串
事件的類型
bubbles
boolean
決定 Event 物件是否參與事件流程的反昇階段。預設值為 false

靜態屬性

名稱 類型說明
flwebgl.events.Event.ENTER_FRAME字串每當 MovieClip 進入影格 (在處理時間軸動畫之前) 時傳送
flwebgl.events.Event.ADDED
字串
在以子系加入顯示元素時傳送。
flwebgl.events.Event.FRAME_CONSTRUCTED字串在建構目前影格之後 (處理影格指令碼之前) 傳送。
flwebgl.events.Event.EXIT_FRAME字串每當 MovieClip 結束影格 (在處理時間軸動畫之後) 時傳送
flwebgl.events.Event.REMOVED
字串
在從父輩移除顯示元素之前傳送。

 

 

方法

getBubbles()

說明

    這個方法會指出事件是否為反昇事件。

傳回值

  • 類型 - boolean

getCurrentTarget()

說明

    這個方法所傳回的物件會主動以事件偵聽程式處理 Event 物件。

傳回值

  • 類型 - flwebgl.events.EventDispatcher

範例

這個片段會同時在舞台及其最上層子系 (mc) 加入事件偵聽程式。當子系加入「mc」時,會執行它的事件偵聽程式 (handlerFn2)。由於 ADDED 事件反昇,因此,在執行「mc」的所有偵聽程式之後,階層架構會上移到舞台的事件偵聽程式 (handlerFn1)。

function handlerFn1(e) {
    console.log("Handler 1");
    var t1 = e.getTarget();	// First child of stage
    var t2 = e.getCurrentTarget();	// Stage
}

function handlerFn2(e) {
    console.log("Handler 2");
    var t1 = e.getTarget();    // First child of stage
    var t2 = e.getCurrentTarget();// First child of stage
}

var stage = player.getStage();
var mc = player.getChildAt(0);
stage.addEventListener(flwebgl.events.Event.ADDED, handlerFn1);
mc.addEventListener(flwebgl.events.Event.ADDED, handlerFn2);

getTarget()

說明

    這個方法會傳回事件目標。

傳回值

  • 類型 - flwebgl.events.EventDispatcher

範例

請參閱 getCurrentTarget() 底下的範例。

getType()

說明

    這個方法會指出事件類型。

傳回值

  • 類型 - 字串

stopImmediatePropagation()

說明

    這個方法會避免處理事件流程中,目前節點以及任何後續節點中的任何事件偵聽程式。

範例

在這個範例中,舞台的最上層子系 (mc) 針對 ADDED 事件增加兩個偵聽程式。當子系加入「mc」時,兩個偵聽程式都會執行。然而,在第一個事件偵聽程式內會呼叫 stopImmediatePropagation(),並且避免「mc」的任何其他偵聽程式接收事件 (例如 handlerFn2)。此外,也會避免事件將階層架構反昇到舞台。

function handlerFn1(e) {
    e.stopImmediatePropagation(); // Stops any other listeners from receiving this event
}

function handlerFn2(e) {
    console.log("This will not execute");
}

var stage = player.getStage();
var mc = player.getChildAt(0);
mc.addEventListener(flwebgl.events.Event.ADDED, handlerFn1);
mc.addEventListener(flwebgl.events.Event.ADDED, handlerFn2);

stopPropagation()

說明

這個方法會避免處理接續在事件流程中的目前節點之後,後續節點中的任何事件偵聽程式。

範例

在這個範例中,舞台的最上層子系 (mc) 針對 ADDED 事件增加偵聽程式。當子系加入「mc」時,偵聽程式就會執行。在這個事件偵聽程式中,會避免事件反昇階層架構 (例如,反昇到舞台)。

function handlerFn(e) {
    e.stopPropagation(); // Stops the event from bubbling up the hierarchy
}

var stage = player.getStage();
var mc = player.getChildAt(0);
mc.addEventListener(flwebgl.events.Event.ADDED, handlerFn);

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策