LMouseEventContainer Class
LMouseEventContainer是一个鼠标事件监听器的容器,一般的鼠标事件监听需要遍历所有的可视对象,对程序消耗是比较大的,使用LMouseEventContainer后,鼠标监听对象变为只监听加载了鼠标事件的对象,可以大幅度提升鼠标事件监听的效率,但是,缺点是无法使用显示对象对鼠标事件进行遮挡。
Constructor
LMouseEventContainer
()
public
Example:
LInit(50, "legend", 800, 480, main);
function main () {
LGlobal.setDebug(true);
LMouseEventContainer.set(LMouseEvent.MOUSE_DOWN,true);
var layer01 = new LSprite();
layer01.x = 50;
layer01.y = 20;
addChild(layer01);
var bmd = new LBitmapData("#FF0000", 0, 0, 100, 100);
var bm = new LBitmap(bmd);
layer01.addChild(bm);
layer01.addEventListener(LMouseEvent.MOUSE_DOWN, onmouse);
layer01.addEventListener(LMouseEvent.MOUSE_DOWN, onmouseOther);
var layer02 = new LSprite();
layer02.graphics.drawRect(1,"#008800",[0,0,100,100],true);
layer02.x = 200;
layer02.y = 20;
addChild(layer02);
layer02.addEventListener(LMouseEvent.MOUSE_DOWN, onmouse);
layer02.addEventListener(LMouseEvent.MOUSE_DOWN, onmouseOther);
}
function onmouse(event){
trace("event.currentTarget : " + event.currentTarget + "(" + event.currentTarget.objectIndex + ")");
trace("event.target : " + event.target + "(" + event.target.objectIndex + ")");
trace("event.clickTarget == event.currentTarget : " + (event.clickTarget == event.currentTarget));
trace("event.offsetX : " + event.offsetX, "event.offsetY : " + event.offsetY);
trace("event.selfX : " + event.selfX, "event.selfY : " + event.selfY, "");
}
function onmouseOther(event,object){
trace("onmouseOther event.currentTarget : " + event.currentTarget + "(" + event.currentTarget.objectIndex + ")");
trace("onmouseOther object : " + object + "(" + object.objectIndex + ")");
trace("onmouseOther object == event.currentTarget : " + (object == event.currentTarget), "");
}
Methods
set
(
public
-
type
-
value
设定是否鼠标事件监听器的容器。
Parameters:
-
type
String事件的类型。
可以设定的事件的类型有下面三种:
事件的类型 值 LMouseEvent.MOUSE_DOWN 可以将LMouseEvent.MOUSE_DOWN放入鼠标事件监听器容器。 LMouseEvent.MOUSE_UP 可以将LMouseEvent.MOUSE_UP放入鼠标事件监听器容器。 LMouseEvent.MOUSE_MOVE 可以将LMouseEvent.MOUSE_MOVE,LMouseEvent.MOUSE_OVER,LMouseEvent.MOUSE_OUT放入鼠标事件监听器容器。 -
value
Boolean是否鼠标事件监听器的容器。
Example:
LInit(1000/50,"legend",800,450,main);
var loader;
function main(){
LGlobal.setDebug(true);
loader = new LLoader();
loader.addEventListener(LEvent.COMPLETE, loadBitmapdata);
loader.load("lufylegend.js.png", "bitmapData");
}
function loadBitmapdata (event) {
trace(loader.objectIndex == event.target.objectIndex);//true
trace(event.target.content == event.currentTarget);//true
var bitmapdata = new LBitmapData(event.currentTarget);
var bitmap = new LBitmap(bitmapdata);
addChild(bitmap);
}
Properties
dispatchAllEvent
Boolean
public
设定是否触发所有范围内的鼠标事件,如果设定为false,则每次只触发最上层的一个鼠标事件。
Default: false
Example:
LInit(50, "legend", 800, 400, main);
var label;
function main(){
LGlobal.setDebug(true);
LMouseEventContainer.set(LMouseEvent.MOUSE_DOWN,true);
LMouseEventContainer.set(LMouseEvent.MOUSE_UP,true);
var backLayer = new LSprite();
backLayer.graphics.drawRect(1,"#000000",[0,0,LGlobal.width,LGlobal.height],true,"#cccccc");
addChild(backLayer);
label = new LTextField();
label.text = "LMouseEventContainer.dispatchAllEvent = false;";
label.size = 18;
label.x = 10;
label.y = 10;
backLayer.addChild(label);
var buttonChange = new LButtonSample1("Change dispatchAllEvent's value");
buttonChange.x = 10;
buttonChange.y = 40;
backLayer.addChild(buttonChange);
buttonChange.addEventListener(LMouseEvent.MOUSE_UP,dispatchAllEventChange);
var layer = new LSprite();
layer.name = "layer";
layer.y = 100;
layer.graphics.drawRect(2,"#ff0000",[0,0,500,200],true,"#880088");
backLayer.addChild(layer);
layer.addEventListener(LMouseEvent.MOUSE_DOWN,mousedown);
layer.addEventListener(LMouseEvent.MOUSE_UP,mouseup);
var button01 = new LButtonSample1("button01",50);
button01.name = "button01";
button01.x = 10;
button01.y = 10;
layer.addChild(button01);
button01.addEventListener(LMouseEvent.MOUSE_DOWN,mousedown);
button01.addEventListener(LMouseEvent.MOUSE_UP,mouseup);
var button02 = new LButtonSample1("button02");
button02.name = "button02";
button02.x = 15;
button02.y = 15;
layer.addChild(button02);
button02.addEventListener(LMouseEvent.MOUSE_DOWN,mousedown);
button02.addEventListener(LMouseEvent.MOUSE_UP,mouseup);
}
function dispatchAllEventChange(){
LMouseEventContainer.dispatchAllEvent = !LMouseEventContainer.dispatchAllEvent;
label.text = "LMouseEventContainer.dispatchAllEvent = "+LMouseEventContainer.dispatchAllEvent+";";
}
function mousedown(e){
trace("mousedown e.currentTarget.name = " + e.currentTarget.name);
}
function mouseup(e){
trace("mouseup e.currentTarget.name = " + e.currentTarget.name);
}