我正在開發一個cocos2d遊戲,其中有一個名爲GamePlaylayer的CCLayer和名爲ShopLayer的另一個CCLayer。 ShopLayer是全屏圖層。 GamePlayLayer是touchnabled和有多個按鈕(CCMenuItemImage)。 ShopLayer可通過具有以下@選擇器的商店按鈕訪問。Cocos2d:如何停止從較高z順序層單擊較低z順序層的按鈕?
(void) onClickShop {
ShopLayer * shop = [[ShopLayer alloc] init];
[self addChild:shop z:40]; }
要停止觸摸傳播,我在ShopLayer中使用了CCTouchOneByOneDelegate和以下方法。
(void) onEnter {
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self
priority:0 swallowsTouches:YES];
[super onEnter];
}
(void) onExit {
[[[CCDirector sharedDirector] touchDispatcher] removeDelegate:self];
[super onExit];
}
(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
return YES;
}
現在它停止ccTouches開始調用GamePlayLayer,這很好。但它無法阻止GamePlayLayer的其他按鈕被調用。所以當我觸摸到放置GamePlayLayer按鈕的位置時,即使我看不到它們,它們也會被調用。
所以我的問題是如何停止從上層單擊下層的按鈕?
謝謝!它像一個魅力。 – user3164248
確實接受答案:) – Shubhank
更好地解釋這一點,它被投票刪除。 –