Цель Cocos2d CCMenuItem дает SIGABRT - PullRequest
1 голос
/ 21 июля 2011

Я пытаюсь создать систему меню, которая вызывает метод в зависимости от того, что нажимается.Проблема в том, что когда я добавляю цель и селектор в CCMenuitems. Он вылетает с ошибкой sgabrt.Я знаю, что проблема связана с целью, но что это должно быть?Вот мой код .h и .m

#import "cocos2d.h"

// splashMenuLayer
@interface splashMenuLayer : CCLayer
{
BOOL menuButtonsShowing;
CCLabelTTF * splashLabel;
CCMenuItemFont * puzzleMenuItem;
CCMenuItemFont * raceMenuItem;
CCMenuItemFont * leaderboardMenuItem;
CCMenu * mainMenu;
}

// returns a CCScene that contains the HelloWorldLayer as the only child
+(CCScene *) scene;
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event;
-(void) ccTouchEnded:(NSSet *)touches withEvent:(UIEvent *)event;
-(void) deleteLabel :(id)sender;
-(void) puzzleMode:(id)sender;
-(void) raceMode:(id)sender;
-(void) Leaderboard:(id)sender;

@property BOOL menuButtonsShowing;
@property (nonatomic, retain) CCLabelTTF* splashLabel;
@property (nonatomic, retain) CCMenuItem* puzzleMenuItem;
@property (nonatomic, retain) CCMenuItem* raceMenuItem;
@property (nonatomic, retain) CCMenuItem* leaderboardMenuItem;
@property (nonatomic, retain) CCMenu* mainMenu;

@end

и наконец

-(void) ccTouchEnded:(NSSet *)touches withEvent:(UIEvent *)event{
if (menuButtonsShowing == NO) {
    id action = [CCSequence actions:[CCFadeOut actionWithDuration:0.5],[CCCallFunc actionWithTarget:self selector:@selector(deleteLabel:)], nil];
    [splashLabel runAction:action];

//create the menu items and all the target/selector
    puzzleMenuItem = [CCMenuItemFont itemFromString:@"Puzzle Mode" target:self selector:@selector(puzzleMode:)];
    raceMenuItem = [CCMenuItemFont itemFromString:@"Race Mode" target:self selector:@selector(raceMode:)];
    leaderboardMenuItem = [CCMenuItemFont itemFromString:@"Leaderboard" target:self selector:@selector(leaderboard:)];

//add the menu items to the menu
    mainMenu = [CCMenu menuWithItems:puzzleMenuItem, raceMenuItem, leaderboardMenuItem, nil];
    [mainMenu alignItemsVertically];
    mainMenu.position = ccp(240, 100);


    [self addChild:mainMenu];
    }
}

-(void) puzzleMode:(id)sender{
NSLog(@"lol1");
}
-(void) raceMode:(id)sender{
    NSLog(@"lol2");
}
-(void) Leaderboard:(id)sender{
    NSLog(@"lol3");

}

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

исправить эту строку с большой буквы L

leaderboardMenuItem = [CCMenuItemFont itemFromString:@"Leaderboard" target:self selector:@selector(leaderboard:)];

до

     leaderboardMenuItem = [CCMenuItemFont itemFromString:@"Leaderboard" target:self selector:@selector(Leaderboard:)];
1 голос
/ 21 июля 2011

Единственное, что мне удалось заметить, это то, что @selector(leaderboard:) должно быть @selector(Leaderboard:) (с большой буквы).

Mike

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