我有两个组件绝对位于容器内(如果有帮助,它们是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"
似乎没有任何效果 - 标签仍然阻止较低的图像接收鼠标事件。
答案 0 :(得分:1)
z-index由显示树决定,其兄弟姐妹上方显示较高索引的子DisplayObject,所以这就是它的工作方式。
你应该做的是将你的标签放在你的按钮作为孩子,但如果你只想运行hack,你想要:
label.mouseEnabled=false;
label.mouseChildren=false;
答案 1 :(得分:0)
label.mouseEnabled = false;
会使标签背后的区域可以点击,这不是您需要的吗?