import flash.display.*
var mc1=new Sprite();
var mc2=new Sprite();
var mc3=new Sprite();
this.addChild(mc1);
mc1.addChild(mc2);
mc2.addChild(mc3);
drawRect(mc1,0xff9900,200);
drawRect(mc2,0x0000FF,100);
drawRect(mc3,0xffbbff,50);
function drawRect(obj,c,l):void
{
obj.graphics.beginFill(c)
obj.graphics.drawRect(0,0,l,l)
}
this.addEventListener("click",clickFunc,true);//将addEventListener函数中的第三个参数设为true,则只在捕获阶段侦听,对于没有子对象的元素,事件是不会触发的,只有当子对象同样侦听相同事件时,才会触发事件(因为没有目标阶段).
mc1.addEventListener("click",clickFunc);
mc2.addEventListener("click",clickFunc);
mc3.addEventListener("click",clickFunc);
function clickFunc(evt:Event):void
{
trace("阶段:",evt.target.name+" 是发出事件的目标对象") ;
trace("阶段:",evt.currentTarget.name+" 是当前捕获事件的目标对象") ;
trace("阶段:",getPhase(evt.eventPhase)) ;
trace("") ; //空行
}
function getPhase(phase:int):String
{
switch (phase)
{
case 1: return "捕获阶段";break;
case 2: return "目标阶段";break;
case 3: return "冒泡阶段";break;
default: return"";
}
}