0

我有一个有 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没有区别。

4

1 回答 1

1

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

于 2013-05-08T14:20:56.600 回答