Search code examples
cocos2d-iphoneccmenuitem

How do you place a ccmenuitem with a cclabel underneath it?


In cocos2d-iphone, I would like to use a sprite for the menu button item and I'd like to place a label underneath it describing the button.

However, I am not sure how to do this.

If I attempt to make more buttons/labels and then use

[menu alignItemsHorizontallyWithPadding:1.5f];

The position of the items is wrong.

Anyway, here is my code;

// Button
CCSprite *panel = [CCSprite spriteWithFile:@"panel.png"];        

// Menu
CCMenu *menu = [CCMenu menuWithItems:nil];


CCLabelBMFont *lblFont = [CCLabelBMFont labelWithString:@"Some text" fntFile:@"arial16.fnt"];

CCMenuItemLabel *mnuLabel = [CCMenuItemLabel itemWithLabel:lblFont];    

CCMenuItemSprite *mnuSprite = [CCMenuItemSprite itemFromNormalSprite:panel selectedSprite:nil disabledSprite:nil target:nil selector:nil];

[menu addChild:mnuSprite];
[menu addChild:mnuLabel];
[menu setPosition:ccp(winSize.width/2, winSize.height/2)];

[self addChild:menu z:1];

Solution

  • Are you sure, you need label UNDERNEATH your sprite? If I understand right, you can just create CCMenuItemSprite instance, then add label to it as a child. smth like:

    CCMenuItemSprite *mnuSprite = [CCMenuItemSprite itemFromNormalSprite:panel selectedSprite:nil disabledSprite:nil target:nil selector:nil];
    CCLabelBMFont *lblFont = [CCLabelBMFont labelWithString:@"Some text" fntFile:@"arial16.fnt"];
    
    [lblFont setAnchorPoint: ccp(0.f, 0.f)];
    [mnuSprite addChild: lblFont];