AS3 事件冒泡理解

 
 
 
 
//====================================================================================================================================
var mcA:Sprite = new Sprite();
var mcB:Sprite = new Sprite();
var mcC:Sprite = new Sprite();
mcA.name = "外层";
mcB.name = "中层";
mcC.name = "内层";


addChild(mcA);
mcA.addChild(mcB);
mcB.addChild(mcC);
drawR(mcA,250,0xFF0000)
drawR(mcB,190,0x00FF00)
drawR(mcC,120,0x0000FF)

//居中定位
mcA.x = stage.stageWidth/2
mcA.y = stage.stageHeight/2

//事件侦听,此处参数传入true 设置侦听捕获阶段事件
mcA.addEventListener(MouseEvent.CLICK,fun,true)
mcB.addEventListener(MouseEvent.CLICK,fun,true)
mcC.addEventListener(MouseEvent.CLICK,fun,true)

//侦听目标、冒泡阶段事件
mcA.addEventListener(MouseEvent.CLICK,fun)
mcB.addEventListener(MouseEvent.CLICK,fun)
mcC.addEventListener(MouseEvent.CLICK,fun)


//事件处理函数
function fun(_evt:MouseEvent):void{
        var i:String 
        switch(_evt.eventPhase ){
                case 1:
                        i = "捕获阶段";
                break;
                case 2:
                        i = "【目标阶段】";
                break;
                case 3:
                        i = "冒泡阶段";
                break;
        }
        trace("当前阶段:",i, "当前事件触发对象(target):",_evt.target.name,"\t\t当前事件处理对象(currentTarget):",_evt.currentTarget.name)
        if( _evt.target.parent == root  || (_evt.eventPhase == 3 && _evt.currentTarget.parent == root) ){
                trace("\n\n========================\n\n")
        }
}

//绘制函数
function drawR(_sp:Sprite, _rec:uint, _color:uint):void{
        _rec = _rec/2;
        var _g:Graphics = _sp.graphics;
        _g.beginFill(_color);
        _g.drawRect(-_rec,-_rec,_rec*2,_rec*2);
        _g.endFill();
}

新建文件fla ,然后加入帧代码

猜你喜欢

转载自blog.csdn.net/jackson_0606/article/details/8243902
今日推荐