Flex分享:Event事件機制

FLEX事件機制包括:註冊事件、觸發事件、事件的傳遞

1、事件註冊
    1.1 直接指定給函數事件:
    <mx:Button id="btnA" label="不傳遞事件對象的點擊" click="onClickA()" />
    <mx:Button id="btnB" label="傳遞對象的點擊" click="onClickB(event)">
    1.2 使用AS的addEventListener()完成MXML組件的事件註冊:
    btnB.addEventListener(MouseEvent.CLICK,onClickB);
    
    事件被註冊(或者說被添加了偵聽器)後,當該事件發生時, 就會調用註冊的事件響應函數。

2、事件觸發
     註冊到對象上的事件發生時,就是事件的觸發。事件觸發後會調用註冊在該事件上的事件響應函數,同時創建事件對象的一個實例,該實例會包含事件的信息。比如對事件click的觸發,就是當用戶使用鼠標點擊註冊了click事件的對象。
    事件觸發後,一般經歷3個階段:
    2.1 捕獲階段:
    FLEX應用是一層一層的關係,比如Application裏有一個容器Canvas,而Canvas裏有一個VBox,真正發生事件的是VBox裏的一個按鈕。當用戶點擊這個按鈕時,實際上該事件會經歷3個對象,第一個是Application,第2個是Canvas,第3個是VBox,最後纔是事件註冊的對象按鈕。那麼click事件自上而下地進行查找點擊對象的工作,這個過程就是捕獲階段。
    2.2 目標鎖定階段
    當自上而下找到事件註冊並觸發的對象時,FLEX將會自動創建一個Event的實例,這個實例包含着整個事件的相關信息。
    2.3 冒泡階段 
    與前面捕獲階段相反,冒泡階段就是事件會向上一級傳遞。

3、事件傳遞(關鍵)
    3.1 target和currentTarget的區別:
    target:記錄事件的源頭
    currentTarget:記錄事件當前傳遞到的對象
    3.2 阻止事件冒泡主要有兩個方法:
    stopPropogation()和stopImmediateProogation(),當調用任何一個方法的時候,事件的冒泡就會被阻止,事件流將不會向上層傳遞。
    如果當前對象上註冊了多個事件,則使用stopPropogation(),因爲並不希望當前對象上的其他事件還沒執行就被中止。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章