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

5uzkadbs  于 2022-09-21  发布在  Apache
关注(0)|答案(2)|浏览(115)

我有两个组件绝对定位在一个容器中(如果有帮助,它们是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"似乎没有任何效果-标签仍然阻止下部图像接收鼠标事件。

z3yyvxxp

z3yyvxxp1#

Z索引由显示树确定,索引较高的子DisplayObject显示在其同级对象的上方,因此这就是它的工作方式。

当你还是个孩子的时候,你应该做的是把你的标签放在你的按钮里,但如果你只是想随机应变,你会想要:

label.mouseEnabled=false;
label.mouseChildren=false;
7eumitmz

7eumitmz2#

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

相关问题