import flash.display.Sprite; import flash.display.DisplayObject;
//事件流用于描述事件发生在显示列表中,可分为三个阶段: //捕获阶段(capture phase):从顶部(如stage)到目标 //目标阶段(target phase):目标 //冒泡阶段(bubbling phase):从目标到顶部
//创建两个节点 var sp1:Sprite =new Sprite (); var sp2:Sprite =new Sprite (); //创建显示列表 this.addChild (sp1); sp1.addChild (sp2); //绘制图形,便于观察 drawRect(sp1,0xff6600,200); drawRect(sp2,0x0000ff,100); function drawRect(obj:DisplayObject ,c:uint ,l:int):void { obj.graphics.beginFill(c); obj.graphics.drawRect(0,0,1,1); } //定义实例名,以便在输出面板查看信息 sp1.name="sp1"; sp2.name="sp2"; //为所有节点注册事件 stage.addEventListener(MouseEvent.CLICK,clickFunc); this.addEventListener(MouseEvent.CLICK,clickFunc); sp1.addEventListener(MouseEvent.CLICK,clickFunc); sp2.addEventListener(MouseEvent.CLICK,clickFunc); //定义侦听器函数 function clickFunc(e:MouseEvent):void { //得到实例名 var s:String=e.currentTarget.name; //如果实例名存在,输出实例名 if(s) { trace(s); //如果实例名不存在,说明到达舞台,输出stage }else { trace("stage"); } }
测试影片,单击最小的矩形,可在输出面板中看到输出信息。从输出的信息可以看出 事件处理时,首先从最底层的sp2开始,这就是目标阶段,因为鼠标单击的最小矩形 就是sp2,然后从sp2开始,慢慢上升到最顶层的stage,这就是事件流的冒泡阶段。