0

状況: [(CCMenu*)myMenu alignItemsVerticallyWithPadding:4.0f] を使用して、複数のボタン (CCMenuItemSprite) を垂直にレイアウトしています。Retina 以外のデバイスでは、パディングは期待どおりに表示されますが、シミュレーターの Retina モードでは、パディングが 2 倍になっているように見えます。理由についてのアイデアはありますか?

コード:

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

Retina アセットはありますか?cocos2d はアセットを自動スケールアップしないため、CCSprite のサイズが半分になり、パディングが 2 倍になったように見えます。

于 2012-06-10T17:29:43.480 に答える
0

私はcocos2dの経験があまりありませんが、これを試すことができます:

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