2012-01-16 4 views
0

하나의 MenuItem 만 추가하면 제대로 작동합니다. 나는 다른 두 메뉴 아이템에 갈 때하지만 예외 'NSInvalidArgumentException', 이유 충돌 '+ [있는 NSInvocation invocationWithMethodSignature :] : 메소드 서명 인수가 nil이 될 수 없다'내가 뭐하는 거지 여기cocos2d에 여러 MenuItem을 추가하면 응용 프로그램이 중단됩니다.

CCMenuItem *startGame = [CCMenuItemImage itemFromNormalImage:@"start-game.png" selectedImage:@"start-game.png" target:self selector:@selector(startGame:)]; 


    CCMenuItem *settings = [CCMenuItemImage itemFromNormalImage:@"settings.png" selectedImage:@"settings.png" target:self selector:@selector(settings:)]; 


    CCMenuItemImage *gameCentre = [CCMenuItemImage itemFromNormalImage:@"game-centre.png" selectedImage:@"game-centre.png" target:self selector:@selector(gameCentre:)]; 


    CCMenu *menu = [CCMenu menuWithItems:startGame, settings, gameCentre, nil]; 
    [menu alignItemsVerticallyWithPadding:10]; 
    [self addChild:menu z:1]; 

여기 내 선택 기능

-(void)startGame:(id)sender 
{ 
    NSLog(@"start game"); 
} 
-(void)setttings:(id)sender 
{ 
    NSLog(@"settings"); 
} 
-(void)gameCentre:(id)sender 
{ 
    NSLog(@"game centre"); 
} 

고맙습니다 어떤 도움을 사전에

+0

철자가 잘못되었습니다 - (void) setttings : (id) 보낸 사람 –

답변

0

이후로 끝나지 않는 당신의 선택기 ":", 즉 @selector (gameCentre :) 클래스의 메소드가 실제로 인수를 가지고 있는지 확인

- (void)startGame:(id)sender 
{ 
    // do whatever you want here 
} 

- (void)settings:(id)sender 
{ 
    // do whatever you want here 
} 

- (void)gameCentre:(id)sender 
{ 
    // do whatever you want here 
} 
+0

나는 똑같이했다. 이상하게 여기는 것은 첫 줄에서 충돌하지 않는다는 것입니다. 두 번째 줄에서 오류가 발생합니다. –

+0

당신의 방법이 잘못 입력되었습니다. - (void) setttings : (id) 보낸 사람 : - (void) 설정 : (id) 보낸 사람 –

+0

OMG! 그런 어리석은 실수를해서 미안해. 사실 게임 개발의 첫 경험은 혼란 스럽습니다. 어쨌든 고맙습니다 ... –

0

것 같습니다 당신의 선택 기능이 s (startGame, settings, gameCentre)가 제대로 작성되지 않았습니다.

+0

선택자 기능을 사용하여 질문을 편집했습니다 –

+0

프로젝트에 코드에서 언급 한 이미지가 포함되어 있는지 확인하십시오. – Ashishail

0

당신의 선택이 매개 변수를 고려하지 않을 수 있습니다 당신이 언급된다 "@selector(startGame:)"은 마치 매개 변수를 사용하는 것과 같습니다. 매개 변수를 수락하지 않으면 "@selector(startGame)"과 같을 수 있습니다. 당신은 그것을 확인해야합니다 ..

+0

아무런 차이가 없었습니다. –

관련 문제