ios - Cocos2d - 奇怪的 CCMenu 和 CCMenuItem 行为 - 不正确的 HitTest 层顺序

标签 ios objective-c cocos2d-iphone

我遇到了 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/

相关文章:

ios - 当我尝试引用 firebase 数据库时应用程序崩溃

objective-c - iPad 的 UItableView 单元格内容大小

iphone - iOS中将键值对添加到plist文件时出现问题

android - Eclipse Android SDK 错误 : unknown virtual device name

objective-c - Box2D 编译错误

ios - CALayer 子类 "drawInContext"调用但不绘制?

objective-c - 如何使用按钮返回到我的第一个 View

ios - 呈现和关闭模态视图 Controller

objective-c - 用 OpenUDID 替换 UDID 这样好吗?

iphone - Cocos2D iPhone - 淡出 Sprite 留下碎片