異なる 2 画面の解像度によると、すべてのデバイスで 1 つの画像を使用することはできません。
では、 Cocos2d-android でこれを管理するにはどうすればよいでしょうか?
また
setScale() を使用しても問題ありません。
異なる 2 画面の解像度によると、すべてのデバイスで 1 つの画像を使用することはできません。
では、 Cocos2d-android でこれを管理するにはどうすればよいでしょうか?
また
setScale() を使用しても問題ありません。
画面サイズに応じて適切な画像を取得できるメソッドを作成する必要があります。
画像を取得するのに役立つ次の手順があります
1) 画面サイズを取得して変数に格納する
として使用しました
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
display = wm.getDefaultDisplay();
if(display.getWidth()<=320)
{
GameCons.setSCreenSize(1);
}else if(display.getWidth()<=480)
{
GameCons.setSCreenSize(2);
}else if(display.getWidth()<=860)
{
GameCons.setSCreenSize(3);
}else
{
GameCons.setSCreenSize(4);
}
これで、変数 screenSize に画面サイズ (1,2,3,4) が格納されました
2)使用している画像に名前を割り当てます
4 つの解像度で player.png の 4 つの画像があると仮定すると、そこに名前を player_1.png player_2.png player_3.png player_4.png として割り当てます。
これらは異なる解像度の同じ画像です
3) イメージの名前を次のように返すメソッドを作成します。
public static String getImageURI(String name) {
if (screenSize== 1) {
return name + "_1.png";
} else if (screenSize== 2) {
return name + "_2.png";
} else if (screenSize== 3) {
return name + "_3.png";
} else {
return name + "_4.png";
}
}
4)名前をスプライトまたは他のものに渡すときに、レイヤーでこのメソッドを使用する必要があります。
target = CCSprite.sprite(getImageURI("player"));
実際の名前は player_1.png のようになっているため、メソッドのアンダースコアの前に名前のみを渡す必要がありますが、プレーヤーのみを渡します。
getImageURI は、画面サイズが 2 の場合に getImageURI が返すと仮定して、画面サイズに応じて適切な名前を返します。
player_2.png
コードは次のようになります target = CCSprite.sprite("player_2.png");//getImageURI は player_2.png を返します