我遇到了 CCMenu 和 CCMenuItem 的一个奇怪的怪癖,它们可能是也可能不是 cocos2d 库的一部分,所以我不确定是否应该将其报告为错误。
当两个 CCMenu 项目重叠时,最后添加到菜单的项目会在另一个项目上方显示其图像/纹理。 例如:
CCMenu *menu = [CCMenu menuWithItems:item1, item2, nil];
// item2 will appear to be on top of item 1
有趣的是,触摸发生重叠的 item2 会触发 item1 的选择器或 block 。为什么在测试触摸时,层级中视觉上较高的项目实际上较低?有解决办法吗?
最佳答案
我查看了 CCMenu 的代码,发现发生这种情况是因为在测试触摸时,CCMenu 遍历其子数组并返回它发现的第一个通过 HitTest 的数组。
第二个按钮出现在第一个按钮之上,就像每个 child 在 cocos2d 中工作一样。只要它们都具有相同的 z 顺序,最后添加的就会显示在顶部。
我不确定这是否是一个错误,但我确实在您可以尝试的 cocos2d 论坛上找到了建议的修复方法。 http://www.cocos2d-iphone.org/forum/topic/8554
关于ios - Cocos2d - 奇怪的 CCMenu 和 CCMenuItem 行为 - 不正确的 HitTest 层顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846287/