<? xml version="1.0" encoding="utf-8" ?> < mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="absolute" creationComplete ="initApp()" > < mx:Script > <![CDATA[ import flash.events.MouseEvent; internal function initApp():void{ canvas1.addEventListener(MouseEvent.CLICK,CanvasHandler); canvas2.addEventListener(MouseEvent.CLICK,CanvasHandler); btn1.addEventListener(MouseEvent.CLICK,pressBtn); //因为都没有打开捕获功能,所以输出时从下往上。 btn2.addEventListener(MouseEvent.CLICK,pressBtn,true); //btn2打开了事件捕获功能,所以输出时从上向下,又因为CanvasHandler函数中有stopImmediatePropagation(),所以到这执行不下去。 } internal function output(msg:String):void{ txtArea1.text += msg+" "; } internal function pressBtn(event:MouseEvent):void{ this.output("是否冒泡---"+event.bubbles);//event.bubbles 表示是否打开冒泡功能 //输出当前的点击对象和事件流当前的阶段,1表示捕获阶段,2表示目标阶段,3表示冒泡阶段 this.output("目标对象:"+event.target+":"+event.eventPhase); //输出当前正在处理的对象 this.output("遍历对象:"+event.currentTarget); this.output("------------"); } internal function CanvasHandler(event:MouseEvent):void{ output("目标对象---"+event.target+"----"+event.eventPhase); event.stopImmediatePropagation(); //停止事件流的传播 } ]]> </ mx:Script > < mx:Canvas x ="10" y ="10" width ="328" height ="355" id ="canvas1" > < mx:Text x ="21" y ="10" text ="canvas1" id ="txt1" /> < mx:Canvas x ="10" y ="36" width ="308" height ="135" id ="canvas2" > < mx:Text x ="129" y ="10" text ="canvas2" id ="txt2" /> < mx:Button x ="118" y ="55" label ="Button2" id ="btn2" /> </ mx:Canvas > < mx:Button x ="21" y ="179" label ="Button1" id ="btn1" /> < mx:TextArea x ="10" y ="209" width ="308" height ="136" id ="txtArea1" /> </ mx:Canvas > </ mx:Application >