Cocos2d菜单仅在屏幕的一部分上进行触摸

时间:2013-05-07 19:36:22

标签: ios cocos2d-iphone

我有一个有2层的场景。主层和它上面的hud层。 hud只有一个带有按钮和计时器标签的菜单。我正在使用CCNode-SFGestureRecognizers,因此我可以为主要图层屏幕中间的每个UIGestureRecognizers添加标准CCSprites。奇怪的是,菜单似乎正在吃红线右侧区域的所有触摸事件。不仅在菜单的底部,而且一直到屏幕的顶部。如果我没有将菜单添加到图层,或者如果我将该图层放在主图层后面,一切正常,但这对我来说并不适用。我需要做些什么来解决这个问题?

//The hud layer setup
CCMenu *menu = [CCMenu menuWithArray:@[_recordButton, resetButton, debugButton, _playButton]];
[menu setPosition:ccp(windowSize.width - 225, 50)];
[menu alignItemsHorizontallyWithPadding:50];
[self addChild:menu];

//The scene setup in another class
self.mainLayer = [MainLayer node];
[self addChild:_mainLayer z:0];
self.hudLayer = [HudLayer node];
[self addChild:_hudLayer z:1];

Screen Shot

编辑: 我尝试设置菜单的优先级[menu setHandlerPriority:128];,当这不起作用时,我将CCMenu子类化并覆盖:

-(void) registerWithTouchDispatcher
{
    [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:200 swallowsTouches:NO];
}

我已尝试将swallowsTouches:设置为NOYES,但没有区别。

1 个答案:

答案 0 :(得分:1)

事实证明,CCMenu默认为contentSize,等于设备的屏幕尺寸。这使得它有效地覆盖了我正在使用的位置的1/2场景。所以我只需要将内容大小设置为接近实际菜单项的总体大小:[menu setContentSize:CGSizeMake(400, 50)];