即使 Sky 已将 mouseEnabled/mouseChildren 设置为 false……它仍然是一个对象,但仍会占用空间,因此仍充当任何未将 mouseEnabled/mouseChildren 设置为 false 的 PARENT 容器的命中区域。
因此,我怀疑您的 Sky 对象与 Tree 对象不在同一个父容器中。您的 Sky 对象可能有自己的父容器对象,它是拦截事件的罪魁祸首。
详细说明:任何包含 ANYTHING 的对象都会有一个点击区域并会拦截鼠标点击,即使它包含的所有单独的东西(形状、子对象等)可能会将 mouseEnabled/mouseChildren 设置为 false。
因此,即使您的 Sky 对象将 mouseEnabled 设置为 false,您的 Sky(及其子对象)仍会占用空间,因此仍会为 Sky 的父容器提供一个点击区域来拦截鼠标事件。
因此,您的解决方案是确保 Sky 的所有父容器的 mouseEnabled 属性设置为 false,至少直到(但不包括)Tree 和 Sky 对象的第一个公共祖先容器。
此外,通过设置 mouseEnabled=false 并保留 mouseChildren=true,您可以拥有一个容器,其中仅选择 mouseEnabled=true 的子项接收点击事件 :)