Программирование меню Cocos2d * без * изображений - PullRequest
0 голосов
/ 10 октября 2011

Добрый вечер всем,

Я пытаюсь закодировать меню, но получаю

Тема 1: Программа получила сигнал: "SIGABRT".

В данный момент мой код минимален, просто пытаюсь заставить его работать!

@implementation Menu

+(id)scene{
    CCScene *scene = [CCScene node];
    CCLayer *layer = [Menu node];
    [scene addChild:layer];
    return scene;
}

-(id)init{
    if((self = [super init])){
        CCLabelTTF *playLabel = [CCLabelTTF labelWithString:@"Play" fontName:@"Marker Felt" fontSize:40];
        CCMenuItemLabel *play = [CCMenuItemLabel itemWithLabel:playLabel target:self selector:@selector(doPlay:)]; //This is where SIGABRT happens//

        menu = [CCMenu menuWithItems:play, nil];
        [self addChild:menu];
    }
    return self;
}

-(void)doPlay{
    CCLOG(@"doPLay");
}
@end

Любая помощь будет принята с благодарностью :) Кажется, что очень мало кода для меню без изображений.

1 Ответ

2 голосов
/ 10 октября 2011

Первый порядок работы:

  1. Перейти к настройкам сборки
  2. Найти флаг предупреждения компилятора «Undeclared Selector»
  3. Установить его в YES

Это вызовет много подобных ошибок, и я действительно не понимаю, почему этот параметр не включен по умолчанию во всех проектах Xcode.

Позвольте мне объяснить, в чем ваша ошибка,это легко пропустить без этого предупреждения.Селектор, переданный в пункт меню, таков:

@selector(doPlay:)

Селектор, который реализован, таков:

-(void) doPlay
{
}

Они не совпадают!Пункт меню ожидает селектор, который принимает один параметр, обозначенный как: (двоеточие).Измените селектор на это:

@selector(doPlay)

Все будет в порядке.В следующий раз компилятор предупредит вас об этой неудаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...