var mc:MovieClip = new MovieClip(); mc.graphics.beginFill(0x0066cc); mc.graphics.drawRect(100,100,200,200); addChild(mc); mc.addEventListener(MouseEvent.CLICK,onClick); function onClick(e:MouseEvent):void { trace(e.type) // Event类下的,表示事件的类型 trace(e.bubbles) // Event类下的,指示事件是否为冒泡事件 trace(e.cancelable) // Event类下的,表示是否忽视事件的默认行为 }
bubbles 默认false true 说明可以使用冒泡事件false 说明不可以
cancelable默认false如果不执行默认行为,则此值为 true;否则为 false。它是只读属性如果要修改可以用preventDefault()方法,可以取消默认行为
代码可通过访问 cancelable 属性来检查是否可以阻止任何指定事件对象的默认行为。 cancelable 属性包含一个布尔值,用于指示是否可以阻止默认行为。 您可以使用
preventDefault() 方法阻止或取消与少量事件关联的默认行为。
cancelable 还可以这样理解表示某个事件的默认行为能否被阻止。 true表示可以阻止,false表示不可以。
Event类的eventPhase属性也是只读属性,表示事件流的阶段。1、表示捕获阶段 2、目标阶段 3、冒泡阶段
var sp1:Sprite = new Sprite(); var sp2:Sprite = new Sprite(); this.addChild(sp1); sp1.addChild(sp2); drawRect(sp1,0xff9900,200); drawRect(sp2,0x0000ff,100); function drawRect(obj:DisplayObject,c:uint,b:uint):void { // 这里要把严谨模式去掉 obj.graphics.beginFill(c); obj.graphics.drawRect(0,0,b,b); } sp1.name = "sp1"; sp2.name = "sp2"; // 为所有节点注册事件 // 使用捕获阶段 stage.addEventListener(MouseEvent.CLICK,clickFunc,true); this.addEventListener(MouseEvent.CLICK,clickFunc,true); sp1.addEventListener(MouseEvent.CLICK,clickFunc,true); // 使用目标阶段 sp2.addEventListener(MouseEvent.CLICK,clickFunc); // sp2属于目标阶段不用设置true // 冒泡阶段 stage.addEventListener(MouseEvent.CLICK,clickFunc); this.addEventListener(MouseEvent.CLICK,clickFunc); sp1.addEventListener(MouseEvent.CLICK,clickFunc); function clickFunc(e:MouseEvent):void { var s:String = e.currentTarget.name; // 获得实例名 if(s) // 如果存在实例名,那么就输出实例名 { trace(s,"阶段" + e.eventPhase); } else // 如果实例名不存在,说明到达舞台,输出stage { trace("stage","阶段" + e.eventPhase); } }