当前位置: 主页 > 平面设计 > Flash CS3:InteractiveObject的doubleClick事件

Flash CS3:InteractiveObject的doubleClick事件

  • 2022-02-22
  • 来源/作者: PS123.NET收集    / 佚名    
  • 2 次浏览

我们知道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");
}