我有一個有2層的場景。主層和它上面的底層。 hud只有一個帶按鈕和計時器標籤的菜單。我使用的是CCNode-SFGestureRecognizers,因此我可以在主層上的屏幕中間爲每個CCSprites
附加標準UIGestureRecognizers
。奇怪的是,菜單似乎在吃紅線右側區域的所有觸摸事件。不只是在菜單的底部,而是一直到屏幕的頂部。如果我沒有將菜單添加到圖層中,或者如果將該圖層放在主圖層後面,則一切正常,但這對我來說不起作用。我需要做些什麼來解決這個問題?Cocos2d菜單隻在屏幕的一部分上吃東西
//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
,沒有區別。
您是否正在使用TouchDispatcher註冊HUD層? – 2013-05-07 20:33:20
我剛剛嘗試在HUD層中添加' - (void)registerWithTouchDispatcher'實現,它看起來從未被調用過。 – jamone 2013-05-07 20:48:38
你不需要,我只是好奇。但你也必須通過調用'[HudLayer setTouchEnabled:YES]'來註冊它。您可以通過調用'[[[CCDirector sharedDirector] touchDispatcher] setPriority:1 forDelegate:myCCMenu]來修改特定'CCMenu'的優先級;'請記住,觸摸優先級是低到高的,所以較低的數字會變得更高優先。 – 2013-05-07 20:53:06