儿童选择器的CCMenu孩子没有开火

时间:2012-10-20 06:50:42

标签: cocos2d-iphone ccmenuitem

我在ccmenuitemsprite中有一个带有ccmenuitemsprite的ccmenu,它有选择器。 我希望孩子的孩子成为一个按钮,它可以激活一个选择器,但它不会被射击。

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];

1 个答案:

答案 0 :(得分:2)

如果您想将图片名称作为参数传递,请使用以下代码:

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

您使用的构造函数需要CCSprite,而不是NSString


好的,在您编辑答案后,我仔细查看了,playBtnbg的孩子。你不能这样做。只有CCMenu的直接子项才能发送回调:

[menu addChild:playBtn];

我建议你这样做:

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];