Метка cocos2d-Menu отображается на слое, но не реагирует на прикосновения
Я не знаю, что не так, может быть, потому что я использую больше слоев?
Я думаю, что мой другой слой (скользящий подкласс сетки меню крадет прикосновения...)
//
// BGLayer.m
// MainProject
//
// Создано NSSL1 30.08.12. // Copyright (c) 2012 MyCompanyName. Все права защищены. //
#import "BGLayer.h"
#import "GameManager.h"
#import "MainMenuLayer.h"
@interface BGLayer()
-(void)displayBGMenu;
@end
@implementation BGLayer
-(void)backtomenu:(CCMenuItem*)itemPassedIn{
CCLOG(@"why I can't reach here?");
[[GameManager sharedGameManager] runSceneWithID:kMainMenuScene];}
-(id)init {
self = [super init];
if (self != nil) {
self.isTouchEnabled=YES;
[self displayBGMenu];
}
return self;
}
-(void)displayBGMenu{
NSString* backLabelstring = [NSString stringWithFormat:@"Back to Menu"];
CGSize screenSize = [CCDirector sharedDirector].winSize;
//Shadow
CCLabelTTF *backLabel = [CCLabelTTF labelWithString:backLabelstring fontName:@"Marker Felt" fontSize:32];
backLabel.position=CGPointMake(screenSize.height*0.5f, screenSize.width*0.1f);
backLabel.color = ccBLUE;
CCMenuItem* backbtnitem=[CCMenuItemLabel itemWithLabel:backLabel target: self
selector:@selector(backtomenu:)];
[backbtnitem setTag:21];
menu = [CCMenu menuWithItems:backbtnitem ,nil];
menu.position = CGPointMake((screenSize.width / 2), screenSize.height*0.1f);
menu.tag = 200;
[self addChild:menu z:20 tag:200];
}
@end
1 ответ
У меня была проблема со слоями, глотающими прикосновения в том же типе класса, и чтобы избежать этого, кто-то предложил мне добавить это в метод init класса элемента кнопки сетки:
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1 swallowsTouches:YES];
В результате класс, вызывающий этот метод, не будет жадным по отношению к детектору касания родительского слоя, обнаруживая только касания в его области, и позволит пользователю плавно прокручивать меню, а также нажимать другие элементы в родительском элементе. слой (например, ваше меню).