0

情况: 我正在使用 [(CCMenu*)myMenu alignItemsVerticallyWithPadding:4.0f] 垂直布局几个按钮 (CCMenuItemSprite)。在非视网膜设备上,填充按预期显示,但在模拟器上的视网膜模式下,填充似乎加倍。关于为什么的任何想法?

代码:

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

更新: 我不想做这样的事情,但如果没有更好的解决方案我会这样做:

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

3 回答 3

1

已解决:
填充问题是由 TexturePacker 中的设置造成的。我将“内部填充”设置为 4px。删除设置解决了问题。请看下面的截图:

在此处输入图像描述

于 2012-06-10T19:12:41.043 回答
0

我对 cocos2d 没有太多经验,但你可以试试这个:

[myMenu alignItemsVerticallyWithPadding:(4.0f/[[UIScreen mainScreen] scale])];
于 2012-06-10T16:23:23.087 回答
0

你有视网膜资产吗?cocos2d 不会自动扩大您的资产,所以它是您的 CCSprite 的一半大小,因此填充似乎加倍。

于 2012-06-10T17:29:43.480 回答