【问题标题】:How can I test if a Flex control is obscured by another?如何测试 Flex 控件是否被另一个控件遮挡?
【发布时间】:2012-09-25 13:27:57
【问题描述】:

我正在尝试编写一个函数

internal function isObscured(o: DisplayObject): Boolean;

告诉给定对象o 是否被另一个对象部分或完全遮挡。我已经尝试过使用hitTestObjecthitTestPoint;如果我测试手头对象的边界矩形中的 每个 点,后者实际上会做我想要的 - 不是很有效。我也尝试过使用setChildIndex,但它似乎也无济于事,因为即使对象没有最大的子索引,它也可能不会被遮挡。

我目前的方法是测试具有大于手头对象的子索引的对象的任何边界矩形是否与手头对象的边界矩形相交,但是我怀疑这仅适用于测试是否有任何 兄弟与我的对象重叠。

有谁知道是否有更好的方法来检查一个 Flex 控件是否被另一个控件遮挡?

【问题讨论】:

    标签: apache-flex actionscript


    【解决方案1】:

    您必须检索代表每个组件的矩形并对其进行测试。

    这里解释得很好:Flex collision testing with hitTestObject

    【讨论】:

    • components 会是那些子索引大于手头对象的索引吗?在我看来,子索引是每个父级的,而不是每个阶段的。
    • 您应该改用对象的 depth 属性。这个问题与此类问题有关:stackoverflow.com/questions/1276108/…
    • 啊,有趣 - 我不知道depth!不幸的是,这似乎仅用于定义呈现给定对象的子对象的顺序 - 但是,depth 值似乎不适用于“全局”级别。所以我 认为 你可以有两个对象 o { depth: 1 }p { depth: 2 }o hsa 两个深度为 1 和 2 的孩子,即使 p 也有两个深度为 1 和 2 的对象。听起来对吗?
    • 我认为是的,但我不确定这种深度、孩子……的混合实际上是如何工作的。在 flex 中很难找到有关 z-index 或显示顺序的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2011-02-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多