在我的Cocos2d 2.0 iOS游戏中,我使用CCMenuAdvanced创建了一个滚动菜单。问题在于菜单的不可见部分也似乎在处理触摸。CCMenuAdvanced即使在它上面有一个精灵时也会被点击
下面是代码(以获得boundaryRect显示和作物正常需要):
// 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];
//...
现在能正常工作,并且菜单显示,在正确裁剪和处理触摸。但是,问题是,当我点击可见菜单下方时,它仍然会处理菜单上的触摸,即使前面有一个不透明像素的精灵()。
我试过用zorder设置前景比菜单摆弄zorder,但似乎没有改变任何东西。
menuBackground.zOrder = 1;
settingsMenu.zOrder = 2;
foreground.zOrder = 3;
我也试过菜单优先级设置为INT_MIN
以及kCCMenuHandlerPriority - 1
,但没有效果。
如何让菜单只响应用户可见的部分?
感谢 阿南德
你的问题是什么?这听起来更像是一个错误报告/功能请求给我。这就是CCMenu和CCMenuAdvanced的行为。而zOrder与输入无关。 – LearnCocos2D
我希望CCMenuAdvanced只对位于前景的位置(在我的情况下只位于边界矩形内)做出响应。在滚动看不见的部分,它上面有一个精灵,它不应该对点击作出响应。我如何实现这一目标? – Anand