我正在开发一个cocos2d游戏,我有一个名为GamePlaylayer的CCLayer和另一个名为ShopLayer的CCLayer。 ShopLayer是一个全屏图层。 GamePlayLayer是touchenabled并有多个按钮(CCMenuItemImage)。 ShopLayer可通过商店按钮访问,该按钮具有以下@selector。
(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;
}
现在它停止调用GamePlayLayer的ccTouchesBegan,这很好。但它无法阻止GamePlayLayer的其他按钮被调用。因此,当我触摸放置GamePlayLayer按钮的位置时,即使我看不到它们也会被调用。
所以我的问题是如何停止从上层点击下层按钮?
答案 0 :(得分:0)
使用kCCMenuHandlerPriority
作为触控优先级
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:kCCMenuHandlerPriority swallowsTouches:YES];
答案 1 :(得分:0)
此类的SetTouch优先级为kCCMenuHandlerPriority。