【问题标题】:When two CCMenuItem overlaps each other, is it possible to prioritise one over the other?当两个 CCMenuItem 相互重叠时,是否可以将一个优先于另一个?
【发布时间】:2026-02-10 10:20:06
【问题描述】:

我有 2 个 CCMenuItems A 和 B

A 是一个全屏透明按钮 B 是一个实际按钮,当 A 被触摸时设置为可见

目前,当我触摸 B 时,A 会用它的选择器方法进行响应,而 B 基本上没有响应,因为触摸被 A 的选择器“接受”了。

即使 A 是全屏按钮,我也需要 B 做出响应,所以 - 是否可以在按下 B 的选择器时优先考虑它?

总而言之,我正在通过 A 切换 B 的可见性,并希望能够在 B 可见时使用它。

这可能吗?怎么办?

【问题讨论】:

    标签: ios4 cocos2d-iphone


    【解决方案1】:

    对我来说,在一层中添加一个菜单,在另一层中添加另一个菜单

    【讨论】:

    • 如果你能详细说明你的答案会更好。
    【解决方案2】:

    我)

    是的,您可以通过设置 Z-Order 来优先处理您的 CCMenuItems

    第一个被触摸的按钮是 Z-Order 最低的按钮。

    二)

    如果你想优先考虑你的CCMenus,你需要setTouchPriority(..)他们。

    您给予的优先级越低,您的CCMenu 就越早处理触摸。 (CCMenu 的默认值为 -128 )。

    【讨论】:

      【解决方案3】:

      您可以将按钮 yourButton.isEnabled 设置为 NO,或者当您不希望它接受输入时,您可以将 A 按钮移出场景。

      【讨论】:

      • 感谢您的回答,但这种方法的问题是我将失去按钮 A 的功能。我希望能够在触摸屏幕上的任何位置时切换 B 按钮,即使当B 可见。
      • 啊,好吧,如果你用 reorderChild 改变他们的 z 呢?那能帮上忙吗?如果我能看到一些代码就更容易了。
      • 感谢您的帮助 Zebulon。我不确定如何使用 reorderChild。我尝试将 z 设置为 init 较大的按钮 z=1,而应该出现在其上方的较小按钮为 z=2。它似乎对图像的 z 顺序有影响(我已将透明层更改为半透明层),但并没有真正帮助选择器优先级。
      【解决方案4】:

      可以为按钮 B 使用具有更高 z 顺序的附加 CCMenu。

      【讨论】:

        最近更新 更多