在我的 Cocos2d 2.0 iOS 游戏中,我使用 CCMenuAdvanced 创建滚动菜单。问题是菜单的不可见部分似乎也在处理触摸。
这是代码(需要让边界矩形正确显示和裁剪):
// background is full screen, with all pixels transparent
// except the part where menu shows
CCSprite *menuBackground = [CCSprite spriteWithFile:@"scrollingmenubackground.png"];
//...
[self addChild:menuBackground];
//...
//create menu items
CCMenuAdvanced *settingsMenu = [CCMenuAdvanced menuWithItems:item1, item2, item3, nil];
//...
[menuBackground addChild:settingsMenu];
// foreground is full screen, with an image
// with a transparent hole where the menu shows
CCSprite *foreground = [CCSprite spriteWithFile:@"scrollingmenuforeground.png"];
[menuBackground addChild:foreground];
//...
现在这工作正常,菜单显示,正确裁剪并处理触摸。然而,问题是当我点击可见菜单下方时,它仍然会处理菜单上的触摸,即使前面有一个带有不透明像素的精灵(foreground
)。
我尝试通过将前景设置为比菜单更高的 zorder 来摆弄 zorder,但这似乎并没有改变任何东西。
menuBackground.zOrder = 1;
settingsMenu.zOrder = 2;
foreground.zOrder = 3;
我还尝试将菜单优先级设置INT_MIN
为 以及kCCMenuHandlerPriority - 1
,但没有效果。
如何让菜单仅响应用户可见的部分?
谢谢阿南德