0

Situation: I'm using [(CCMenu*)myMenu alignItemsVerticallyWithPadding:4.0f] to layout several buttons (CCMenuItemSprite) vertically. On non-retina device the padding appears as expected, but when in retina mode on simulator the padding seems to be doubled. Any ideas as to why?

Code:

CCMenuItemSprite *itemPlay = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:@"play.png"] selectedSprite:nil target:self selector:@selector(goPlay:)];

CCMenuItemSprite *itemHowto = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:@"howto.png"] selectedSprite:nil target:self selector:@selector(goHowto:)];

CCMenuItemSprite *itemSettings = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:@"settings.png"] selectedSprite:nil target:self selector:@selector(goSettings:)];

CCMenuItemSprite *itemHelp = [CCMenuItemSprite itemFromNormalSprite:[CCSprite spriteWithSpriteFrameName:@"help.png"] selectedSprite:nil target:self selector:@selector(goHelp:)];

CCMenu *myMenu = [CCMenu menuWithItems:itemPlay,itemHowto,itemSettings,itemHelp, nil];
myMenu.position = ccp(160.0f,216.0f);
[myMenu alignItemsVerticallyWithPadding:4.0f];
[self addChild: myMenu z:10];

Update: I'd hate to do something like this but I will if no better solution exists:

float padding = 4.0f;
// flag stored in app delegate to know whether we are retina
if([[AppDelegate sharedAppDelegate] isRetina])padding = (2.0f);
CCMenu *myMenu = [CCMenu menuWithItems:itemPlay,itemHowto,itemSettings,itemHelp, nil];
myMenu.position = ccp(160.0f,216.0f);
[myMenu alignItemsVerticallyWithPadding:padding];
[self addChild: myMenu z:10];
eric
  • 4,863
  • 11
  • 41
  • 55

3 Answers3

1

Solved:
The padding problem was created by a setting in TexturePacker. I had 'inner padding' set to a value of 4px. Removing the setting fixed the problem. See screenshot below:

enter image description here

eric
  • 4,863
  • 11
  • 41
  • 55
0

i dont have much experience with cocos2d but you can try this:

[myMenu alignItemsVerticallyWithPadding:(4.0f/[[UIScreen mainScreen] scale])];
skram
  • 5,314
  • 1
  • 22
  • 26
0

Do you have retina assets? cocos2d will not auto scale up your assets, so it's your CCSprite that was half the size, hence the padding seems to be doubled.

X Slash
  • 4,133
  • 4
  • 27
  • 35