1. 程式人生 > >Flex事件冒泡機制

Flex事件冒泡機制

在網上瀏覽了幾篇文章,大體總結了一下,簡單說明如下:

事件的傳遞分為三個階段,如圖:捕獲階段(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函式,有很多引數。