我有两个组件绝对定位在一个容器中(如果有帮助,它们是ILOG药剂Map上的MapSymbols)。每个组件都是一个带有图像和标签的VBox。图像具有与Click事件绑定的功能;标签则没有。
问题是,当两个项目的位置使得一个项目的标签位于z索引中另一个项目的图标之上时,该标签会吃掉任何MouseOver和MouseDown事件。起泡没有帮助,因为它从标签到VBox再到容器,永远不会击中较低的元素。我不能将VBox设置为MouseChildren=“False”,因为这样也可以防止图像被点击。
我能用这个做点什么吗?组件的位置和数量是由数据驱动的,不是我可以控制的。
编辑:一些澄清。每个不同的组件结构如下:
<VBox>
<Image source="whatever" click="handleClick()"/>
<Label text="{item.label}/>
</VBox>
问题是,当其中两个vbox放在一起时--一个盒子的标签可能在另一个盒子的图像之上,阻止你与下面的盒子互动。
(来源:imnotpete.com)
在该示例中,第二个标签阻止了较低的图标--只有当您与该图标的下半部分交互时,才会传递鼠标事件。
将VBox设置为mouseEnabled="false"
,将标签设置为mouseEnabled="false" mouseChildren="false"
似乎没有任何效果-标签仍然阻止下部图像接收鼠标事件。
2条答案
按热度按时间z3yyvxxp1#
Z索引由显示树确定,索引较高的子DisplayObject显示在其同级对象的上方,因此这就是它的工作方式。
当你还是个孩子的时候,你应该做的是把你的标签放在你的按钮里,但如果你只是想随机应变,你会想要:
7eumitmz2#
label.mouseEnabled = false;
会使标签后面的区域可点击,这不正是您需要的吗?