是否可以通过z-index而不是层次结构来冒泡MouseEvent?

时间:2010-02-24 21:26:18

标签: actionscript-3 flex ilog-elixir

我有两个组件绝对位于容器内(如果有帮助,它们是ILOG Elixir地图上的MapSymbols)。每个组件都是带有图像和标签的VBox。图像具有与Click事件相关的功能;标签没有。

问题是当2个项目被定位时,一个标签位于z-index中另一个的图标之上,因此标签会吃掉任何mouseOver和mouseDown事件。冒泡没有帮助,因为它从标签到vbox到容器起泡,从不碰到下面的元素。我无法将vbox设置为mouseChildren =“false”,因为这样可以防止图像被点击。

我能用这件事做点什么吗?组件的定位和数量是数据驱动的,而不是我可以控制的。

编辑:一些澄清。每个不同的组件都是这样构建的:

<VBox>
    <Image source="whatever" click="handleClick()"/>
    <Label text="{item.label}/>
</VBox>

问题是当这些vbox中的两个靠近放在一起时 - 一个盒子的标签可能在另一个盒子的图像上方,阻止你与下面的盒子交互。

alt text http://imnotpete.com/wp-content/uploads/2010/02/example.png

在该示例中,第二个标签会阻止下方图标 - 鼠标事件仅在您与该图标的下半部分进行交互时才会传递。

将VBox设置为mouseEnabled="false"而标签设置为mouseEnabled="false" mouseChildren="false"似乎没有任何效果 - 标签仍然阻止较低的图像接收鼠标事件。

2 个答案:

答案 0 :(得分:1)

z-index由显示树决定,其兄弟姐妹上方显示较高索引的子DisplayObject,所以这就是它的工作方式。

你应该做的是将你的标签放在你的按钮作为孩子,但如果你只想运行hack,你想要:

label.mouseEnabled=false;
label.mouseChildren=false;

答案 1 :(得分:0)

label.mouseEnabled = false;会使标签背后的区域可以点击,这不是您需要的吗?