2012-10-20 1 views
2

셀렉터가있는 ccmenuitemsprite에 ccmenuuitemsprite가있는 ccmenu가 있습니다. 나는 자식의 자식이 셀렉터를 실행하지만 발화하지는 않는 재생 버튼이되기를 바란다.CCMenu 자식 선택기의 자식이 실행되지 않습니다.

CCMenuItem *playBtn = [CCMenuItemImage itemFromNormalImage:@"image.png" 
              selectedImage:@"image_selected.png" 
              disabledImage:@"image_disabled.png" 
                target:self 
                selector:@selector(onPlay:)]; 

사용하는 생성자가 CCSprite 아닌 NSString을 기대하고있다 : 당신은 인자로 이미지의 이름을 전달하려면

CCMenu *menu [CCMenu menuWithItems: nil]; 
CCMenuItem *bg = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(0,50,100,100)] 
             selectedSprite:nil 
             disabledSprite:nil 
               target:self 
               selector:nil]; 
CCMenuItem *playBtn = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(0,0,50,50)] 
               selectedSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(50,0,50,50)] 
               disabledSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(100,0,50,50)] 
                 target:self 
                selector:@selector(onPlay:)]; 
[bg addChild:playBtn]; 
[menu addChild:bg]; 
[self addChild:menu]; 

답변

2

는 다음 코드를 사용하십시오. 당신이 대답을 편집 한 후


확인, 좀 더 자세히보고, 당신은 bg의 자식으로 playBtn 있습니다. 너는 그렇게 할 수 없다. 만 CCMenu의 직접 아이들은 콜백을 보낼 수 있습니다 내가 당신을 혼동하는 경우

CCMenuItem *playBtn = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(0,0,50,50)] 
               selectedSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(50,0,50,50)] 
               disabledSprite:[CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(100,0,50,50)] 
                 target:self 
                selector:@selector(onPlay:)]; 

CCMenu* menu = [CCMenu menuWithItems:playBtn, nil]; 

CCSprite* bg = [CCSprite spriteWithFile:@"sprite_sheet.png" rect:CGRectMake(0,50,100,100)]; 

[self addChild:bg]; 
[self addChild:menu]; 
+0

, 난 내 코드를 편집 죄송합니다 :

[menu addChild:playBtn]; 

난 당신이 실제로 이렇게 제안합니다. 단순히'onPlay :'선택자는 발사되지 않습니다. 모든 스프라이트가 올바르게로드되고 있습니다. – iamruskie

+0

@iamruskie 업데이트 된 답변을 확인하십시오. – Mazyod

+0

@Mayzod 알겠습니다. 직접적인 아이들 만 콜백을 보낼 수 있다는 것을 알지 못했습니다. 나는 2 개의 CCMenus를 가지고 그것들을 겹쳐서 모든 bg의 위치를 ​​피하지 않을 것입니다. 감사! – iamruskie