API Docs for: 1.10.1 最后更新日期:2016年03月28日
Google搜索   
Show:

LMouseEventContainer Class

Available since 1.8.5

LMouseEventContainer是一个鼠标事件监听器的容器,一般的鼠标事件监听需要遍历所有的可视对象,对程序消耗是比较大的,使用LMouseEventContainer后,鼠标监听对象变为只监听加载了鼠标事件的对象,可以大幅度提升鼠标事件监听的效率,但是,缺点是无法使用显示对象对鼠标事件进行遮挡。

Constructor

LMouseEventContainer

() public

Defined in events/LMouseEventContainer.js:1

Available since 1.8.5

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), "");
}

Item Index

Methods

Properties

Methods

set

(
  • type
  • value
)
public

Defined in events/LMouseEventContainer.js:420

Available since 1.8.5

设定是否鼠标事件监听器的容器。

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

Defined in events/LMouseEventContainer.js:47

Available since 1.8.5

设定是否触发所有范围内的鼠标事件,如果设定为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);
}