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;
Другие вопросы по тегам