InteractiveObject的doubleClick事件


我们知道doubleClick事件是在as3中新增加的事件,我们经常需要使用到这个事件,在as2我时代需要自己写函数判断双击,在as3中就可以直接使用这个事件了,但是在使用这个事件的时候有个细节要主要,首先事件是InteractiveObject所属的,因此从InteractiveObject继承下来的对象才能使用该属性,另外一个是要首先设置doubleClickEnabled属性为true,最后这个事件是使用内部的元件接收的(the instance receives doubleClick events within its bounds),所以如果你要侦听的doubleClick事件的元件内部有从InteractiveObject继承的元件,要么设置这些元件的 mouseEnabled为false,要么使用内部原来来侦听doubleClick事件.
1.内部元件不是从InteractiveObject继承下来,可以直接使用元件接收事件
//----------------------------------------------
var a:Sprite = new Sprite();
addChild(a);
var b = new Shape();
a.addChild(b);
b.graphics.beginFill(0x0);
b.graphics.drawRect(0,0,100,100);
b.graphics.endFill();
a.doubleClickEnabled = true;//使用a接收
a.addEventListener("doubleClick",dc);
function dc(e)
{
trace("dc");
}
2.内部元件有多个从InteractiveObject继承下来,可以使用最上面的元件来接收,或者设置其他元件不接收鼠标事件
//----------------------------------------------
var a:Sprite = new Sprite();
addChild(a);
var b = new Sprite();
a.addChild(b);
var c = new Sprite();
a.addChild(c);
b.graphics.beginFill(0x0);
b.graphics.drawRect(0,0,100,100);
b.graphics.endFill();
c.graphics.beginFill(0x0);
c.graphics.drawRect(0,0,100,100);
c.graphics.endFill();
c.mouseEnabled = false;//设置c不接收鼠标事件,才能让下面的b接收
b.doubleClickEnabled = true;//使用b接收
b.addEventListener("doubleClick",dc);
function dc(e)
{
trace("dc");
}
3.设置所有的内部元件不接收鼠标事件,这样就可以使用元件来接收doubleClick事件
//--------------------------------------------------------------------------------
var a:Sprite = new Sprite();
addChild(a);
var b = new Sprite();
a.addChild(b);
var c = new Sprite();
a.addChild(c);
b.graphics.beginFill(0x0);
b.graphics.drawRect(0,0,100,100);
b.graphics.endFill();
c.graphics.beginFill(0x0);
c.graphics.drawRect(0,0,100,100);
c.graphics.endFill();
b.mouseEnabled = false;//不接收鼠标事件
c.mouseEnabled = false;//不接收鼠标事件
a.doubleClickEnabled = true;
a.addEventListener("doubleClick",dc);
function dc(e)
{
trace("dc");
}
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-cs3/497.html

你可能感兴趣的:(html,C++,c,C#,Flash)