我有一个有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];
编辑:
我尝试设置菜单的优先级[menu setHandlerPriority:128];
,当这不起作用时,我将CCMenu
子类化并覆盖:
-(void) registerWithTouchDispatcher
{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:200 swallowsTouches:NO];
}
我已尝试将swallowsTouches:
设置为NO
和YES
,但没有区别。
答案 0 :(得分:1)
事实证明,CCMenu
默认为contentSize
,等于设备的屏幕尺寸。这使得它有效地覆盖了我正在使用的位置的1/2场景。所以我只需要将内容大小设置为接近实际菜单项的总体大小:[menu setContentSize:CGSizeMake(400, 50)];