Flex事件冒泡機制
阿新 • • 發佈:2019-01-24
在網上瀏覽了幾篇文章,大體總結了一下,簡單說明如下:
事件的傳遞分為三個階段,如圖:捕獲階段(Capture Phase)、目標階段、冒泡階段,比如當你點選了一下Child1 Node時,事件會從Stage->Parent Node->Child1 Node一路傳過來(捕獲階段),傳到Child1 Node時,執行Child1 Node的相應事件函式(目標階段),然後傳回Stage(冒泡階段)。
這種機制最簡單的一個利用方法:如果想監聽舞臺上所有控制元件的某種訊息,比如MouseCLICK訊息,直接給Stage(也就是所有訊息的必經之路上)增加監聽函式吧!
程式碼如下:
<fx:Script> <![CDATA[ private function init():void { // 在目標與冒泡階段監聽 this.addEventListener(MouseEvent.CLICK, stageEvent); } private function stageEvent(evt:MouseEvent):void { trace("event:" + evt.target.id); } private function btn1():void { trace("click btn1"); } private function btn2():void { trace("click btn2"); } ]]> </fx:Script> <mx:Button x="100" y="271" label="按鈕1" click="btn1()" id="button1"/> <mx:Button x="201" y="271" label="按鈕2" click="btn2()" id="button2"/>
執行程式,無論點選哪個按鈕,都會觸發stageEvent函式。
詳細參照addEventListener函式,有很多引數。