CCMenuItemLabel не запускает селектор в симуляторе
Я не могу проверить это на своем телефоне, потому что я бедный и новый программист iOS, поэтому я не знаю, является ли это просто проблемой с симулятором или чем-то другим. Также очень новый для cocos2d, так что терпите меня здесь. Я работаю над стартовым экраном для моей игры. Я сделал фоновое изображение с облаком в левом верхнем углу и в правом верхнем углу. Затем поместите CCMenuItemLabel в каждое облако, чтобы оно выглядело очень красиво. Это работает потрясающе.... пока вы не попытаетесь нажать на любую из кнопок, в этом случае ничего не происходит! Вот код, который у меня есть сейчас.
MainMenu: CCScene
@implementation MainMenu
-(id) init {
// Play Label to left cloud
CCLabelTTF * playLabel = [CCLabelTTF labelWithString:@"Play" fontName:@"Marker Felt" fontSize:24];
playLabel.color = ccBLACK;
CCMenuItemLabel * play = [CCMenuItemLabel itemWithLabel:playLabel target:self selector:@selector(playGame)];
CCMenu * playmenu = [CCMenu menuWithItems:play, nil];
playmenu.position = ccp(s.width/5,s.height - 55);
[self addChild:playmenu z:10];
// Options label to right cloud
CCLabelTTF * optionsLabel = [CCLabelTTF labelWithString:@"Options" fontName:@"Marker Felt" fontSize:24];
optionsLabel.color = ccBLACK;
CCMenuItemLabel * options = [CCMenuItemLabel itemWithLabel:optionsLabel target:self selector:@selector(options)];
CCMenu * optmenu = [CCMenu menuWithItems:options, nil];
optmenu.position = ccp(s.width - s.width/5,s.height - 55);
[self addChild:optmenu z:10];
// Add background at z:-1 plus other
}
@end
s - мой размер экрана, а остальное кажется довольно простым. Это все внутри MainMenu.m, который расширяет CCScene. На данный момент мои селекторы - просто NSLogs, чтобы убедиться, что щелчок работает. Который никогда не работает ни для одного из них.
Что я пробовал:
По предложению форумов cocos2d я изменил оба селектора на @selector(playGame:)
а затем методы -(void)playGame:(id) sender
но это тоже не сработало.
3 ответа
В конце я начал новый проект, используя тот же шаблон. Я положил точно такой же код сверху и запустил его. Это работает в этом проекте. Поэтому я начал копировать и вставлять вещи из старого проекта в этот, чтобы попытаться увидеть, что заставило его сломаться, и в конце концов ничего не сломалось. Я предполагаю, что это должно быть что-то на стадии сборки или что-то еще, но теперь все работает.
Теперь я использовал тот же код в образце cocos2D 2.0.. Работает нормально.
Я полагаю, вы не включили прикосновения к своему слою. используйте этот код в вашем методе инициализации CCLayer.
self.isTouchEnabled = YES;
Я знаю, что это старая тема, но я столкнулся с той же проблемой сегодня.
Вот что я должен был сделать, чтобы это заработало,
- Установите положение для
CCMenuItemLabel * play
вccp(s.width/5,s.height - 55)
- Изменить положение
CCMenu *playmenu
вCGPointZero
,
пример
play.position = ccp(s.width/5,s.height - 55);
playmenu.position=CGPointZero;