>1; $a.y=(stage." />

AS3关于事件流

发布时间:2019-08-05 16:10:07编辑:auto阅读(1221)

    首先,设置一次测试环境:

    wKioL1gUUHCxwxJdAAATmqMRxPg723.png-wh_50

    代码如下:

    		var $a : MovieClip = ResLibrary.instance.getMovieClip("A");
    		$a.x = (stage.width - $a.width )>>1;
    		$a.y = (stage.height - $a.height )>>1;
    		stage.addChild($a);
    		
    		var $b : MovieClip = ResLibrary.instance.getMovieClip("B");
    		$b.x =  ($a.width - $b.width )>>1;
    		$b.y = ($a.height - $b.height )>>1;
    		$a.addChild($b);
    		
    		var $c : MovieClip = ResLibrary.instance.getMovieClip("C");
    		$c.x = ($b.width - $c.width )>>1;
    		$c.y = ($b.height - $c.height )>>1;
    		$b.addChild($c);
    		
    		$a.addEventListener(MouseEvent.CLICK,this.ClcikHandler,true,0,false);

    Click回调方法:

    		private function ClcikHandler( event : MouseEvent ):void
    		{
    			trace( event.target , event.currentTarget );
    		}

    依次单击C ,B ,A的结果:单击A根本就没有反应

    wKiom1gUUe-A1dYqAACOW-5UQoA652.png-wh_50

    如果把$a的单击注册事件改成:

    $a.addEventListener(MouseEvent.CLICK,this.ClcikHandler,false,0,false);

    就是将第三个参数改为false , 则结果为:单击A有反应

    wKioL1gUUvDBa8ZcAABkGGO6ZTg848.png-wh_50

    addEventListener的第三个参数如果为false(默认为flase), 回调事件会在冒泡状态的时候执行 ;否则会在目标状态执行。当参数为true时 ,在A上注册,不存在冒泡状态 , 回掉函数不会执行。


    事件机制的3个阶段

    Event有一个属性:eventPhase,可以为以下3个值:

    • 捕获阶段 (EventPhase.CAPTURING_PHASE)。

    • 目标阶段 (EventPhase.AT_TARGET)。

    • 冒泡阶段 (EventPhase.BUBBLING_PHASE)。


关键字