[转载]ActionScript中Event类的几个属性

[转载]Event类的几个属性 – 赵杰民 – 博客园.

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);
 }
}
分享到:更多 ()