Cocos2d - 奇怪的CCMenu和CCMenuItem行为 - 不正确的命中测试图层顺序

时间:2013-02-13 04:14:59

标签: ios objective-c cocos2d-iphone

我遇到了一个奇怪的CCMenu和CCMenuItem的怪癖,它可能或者可能不是cocos2d库的一部分,所以我不确定是否应该将它报告为bug。

当两个CCMenu项目重叠时,最后添加到菜单中的一个显示其图像/纹理高于另一个。 例如:

CCMenu *menu = [CCMenu menuWithItems:item1, item2, nil]; 
// item2 will appear to be on top of item 1

有趣的是,触摸发生重叠的item2会触发item1的选择器或块。为什么在测试触摸时,图层中视觉上较高的项目实际上较低?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

我查看了CCMenu的代码并发现这是因为在测试触摸时CCMenu通过其子数组并返回它发现的第一个通过命中测试。

第二个按钮出现在第一个按钮上,每个孩子在cocos2d中的工作方式相同。只要它们都具有相同的z顺序,最后添加的就会显示在顶部。

我不确定这是不是一个bug,但我确实在你可以尝试的cocos2d论坛上找到了一个建议的修复程序。 http://www.cocos2d-iphone.org/forum/topic/8554