2012-02-21 48 views
0

我在舞台上有两个或多个图形元素(位图,控件)。他们都在听老鼠事件。有时它们可​​以完全或部分地与其他元素重叠。 (想起乱七八糟的拼图)选择隐藏在另一个动作脚本中的资产/ UI元素3

当我点击一个元素,点击事件应该通过传递元素,如果它下面有东西在那一点。如果鼠标点下面没有任何东西,则应该触发移动事件。

例如:请看下面的方框。说出框用“=”符号绘制的是用“ - ”符号绘制的重叠框B.勾结区域用“#”符号绘制。

如果在“#”区域单击鼠标,则事件应触发框B的单击事件而不是框A和各个事件,如果在A和B的非共勾区上单击鼠标。

======== 
=  = 
= ####---- 
= #### - 
====#### - 
    -  - 
    -  - 
    -------- 

我想能够绕过所有元素的鼠标事件,直到底部的元素到达。我希望我的问题有道理。

回答

1

DisplayObjectContainer有一个方法getObjectsUnderPoint。这意味着,在你的事件处理程序,您可以点击点下检索DisplayObjects列表,并检查这个列表包含别的除了实际点击的对象,这样的事情:

function mouseClickHandler(e:MouseEvent):void 
{ 
    var clickedObject:DisplayObject = e.currentTarget as DisplayObject; 
    var list:Array = objectsContainer.getObjectsUnderPoint(new Point(objectsContainer.mouseX,objectsContainer.mouseY)); 
    for each (var object:DisplayObject in list) { 

     if (clickedObject != object) { 
     //call different eventHandler on the object 
     return; 
     } 
    } 
    //call moveEventHandler 
} 

objectsContainer在这种情况下将是一个Stage对象(如果您的对象直接添加到舞台)或某些DisplayObjectContainer是所有这些对象的父对象。

相关问题