2012-06-10 3 views
0

Ситуация: Я использую [(CCMenu *) MyMenu alignItemsVerticallyWithPadding: 4.0f] макет несколько кнопок (CCMenuItemSprite) по вертикали. На устройстве без сетчатки отступы выглядят так, как ожидалось, но когда в режиме сетчатки на симуляторе отступы, похоже, удваиваются. Есть идеи о том, почему?cocos2d CCMenu обивка странно на сетчатке устройства

Код:

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: Я бы не сделать что-то вроде этого, но я не буду, если не лучшее решение существует:

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

ответ

1

Решено:
Проблема набивка была создана установкой в ​​TexturePacker. У меня было «внутреннее заполнение», равное значению 4px. Устранение проблемы устраняет проблему. Смотрите скриншот ниже:

enter image description here

+0

хорошо, что вы решили его! –

0

я не имею большого опыта работы с cocos2d, но вы можете попробовать следующее:

[myMenu alignItemsVerticallyWithPadding:(4.0f/[[UIScreen mainScreen] scale])]; 
0

У вас есть активы сетчатки? cocos2d не будет автоматически увеличивать ваши активы, так что ваш CCSprite был вдвое меньше, поэтому отступы, похоже, удваиваются.

+0

Да у меня есть сетчатка активов в spritesheet (созданный TexturePacker) – sean

Смежные вопросы