2012-01-12 1 views
3

網膜ディスプレイを利用するためにゲームをアップグレードしようとしています。ここで混乱していることがあります。私を助けてください。網膜上のHDとSDの両方のグラフィックス

まず、私が間違っている場合は、私を修正してください。 網膜ディスプレイを有効にすると、Cocos2dは-hdファイル(例えばDog-hd.png)を探して使用しようとします。 2. によって それがいずれかを見つけることができないなら、それをスケーリングせず、元のDog.pngをロードするために起こっているのは、私の問題は、すべてのグラフィックスは、ハイであることを私が持っていない(あるいはしたくない)ということです私はまだすべてをHDと同じように、いくつかのオブジェクトで以前と同じサイズにしたいと考えています。 SDグラフィックをそのまま残しておけば、網膜ディスプレイの1/2ほど大きく見えます。

私はそれがSDグラフィックを認識し、コード内で自動的に2することによって、それらをスケールアップさせるために行うことができますものは何ですか?ありがとう!

+2

私はCocos2dについてはわかりませんが、標準では '@ 2x'を使用しています。だから 'imagename.png'と' imagename @ 2x.png'は 'UIImage'の' imageWithName'で自動的に使われるファイル名になります –

+1

Cocos2Dは@ 2xフォーマットではうまく動作しません。それは)彼らが何であるか言及していないのです。http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:how_to_develop_retinadisplay_games_in_cocos2d – LearnCocos2D

答えて

2

ココアがこれを非常にシームレスに処理します。標準の場合はmyImage.png、網膜画像の場合は[email protected]を使用してください。 xib、ストーリーボード、またはUIImage imageNamed:から画像をロードすると、自動的に正しい画像が選択されます。さらに、ソースと異なるサイズとして表示される画像は、網膜ディスプレイ上で自動的に高い解像度で表示され、@2xサフィックスに関係なく非網膜ディスプレイではより低い解像度で表示されます。

+0

Cocos2Dは、@ 2xの形式でうまく動作しない、そこに互換性の問題がある(それは言及していません彼らは何ですか?)http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:how_to_develop_retinadisplay_games_in_cocos2d – LearnCocos2D

+0

これは、いくつかのリリースされたアプリで私にとって素晴らしい作品です。 –

+0

テクスチャキャッシュはファイル名を正しく扱いますか?テクスチャを削除したい場合は、image.pngまたは[email protected]を手動で削除する必要がありますが、-hd cocos2dを使用すると内部的に-hdへの変換が処理される可能性がありますその場合はimage.pngを削除するだけです。 – LearnCocos2D

0

あなたはSDとHDの両方のために一つだけのグラフィックを使用することができ、それ以外の網膜ディスプレイ上の[OK]をしますが、網膜上に少しぼやけて見える...しかし、問題がなけれパフォーマンスごとにあなたはcocos2dで行っている場合。

あなたがコンテンツのサイズのため、位置決めのためにBoundingBoxをCCPを使用する必要があり、あなたのコード内の静的な値を避ける..私はすべてがうまくなると思います。あなたはこのに関してそれ以上の問題を抱えている場合:)

あなたはここに新しいコメントや質問を投稿することができます。

あなたが網膜にスケールアップSDグラフィックスを使用する場合のおかげ

+0

返信いただきありがとうございます。私はまだ1つのグラフィックがどれだけうまくいくのか混乱している。非網膜ディスプレイ全体を取るSD pngがあるとします。網膜ディスプレイ上では、同じSD pngは画面全体を撮影してぼやけて見えるのではなく、サイズの半分に縮小します。私はこれを試して、cocos2dはSDグラフィックスを自動的に拡大しませんでした。あなたはあなたが言ったように1つだけのSDグラフィックでどのように動作するかを少し詳しく説明できますか?ありがとう – Vinceyhb

0

はcocos2dアプリを有効にし、あなたはノードのスケールのプロパティを変更する必要があります。

// upscaling a sprite that uses SD image 
sprite.scale *= CC_CONTENT_SCALE_FACTOR(); 

あなたがどうかを見つけるの二つの方法がありますスプライトはHDテクスチャのみを使用します。 1つ、あなたはそれを知っているだけで、HD画像を使用しないすべてのスプライトに上記のコードを適用します。次に、イメージの-hdバージョンの存在を確認できます。

NSString* imageFile = @"someimage.png" 
CCSprite* sprite = [CCSprite spriteWithFile:imageFile]; 
NSString* fullFile = [CCFileUtils fullPathFromRelativePath:imageFile]; 
if ([fullFile hasSuffix:@"-hd.png"]) 
{ 
    // upscaling sprite because it uses an SD image 
    sprite.scale *= CC_CONTENT_SCALE_FACTOR(); 
} 

未テストですが動作するはずです。