我有一个 ccmenu,其 ccmenuitemsprite 位于具有选择器的 ccmenuitemsprite 中。 我希望 child 的 child 成为一个播放按钮,可以触发选择器,但不会触发。
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];
最佳答案
如果您想将图像名称作为参数传递,请使用以下代码:
CCMenuItem *playBtn = [CCMenuItemImage itemFromNormalImage:@"image.png"
selectedImage:@"image_selected.png"
disabledImage:@"image_disabled.png"
target:self
selector:@selector(onPlay:)];
您使用的构造函数需要一个 CCSprite
,而不是 NSString
。
好的,在您编辑答案后,我仔细观察,发现 playBtn
作为 bg
的子级。你不能那样做。只有 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];
关于cocos2d-iphone - 子选择器的 CCMenu 子项未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12986034/