使用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");
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值