4

複数の画面解像度をサポートするためにlibgdxをサポート(アルゴリズムを作成)するにはどうすればよいですか?次のようなパラメーターを持つifステートメントを使用して、HTCタトゥーでアプリを動作させました。

if (Gdx.input.getX()==40) {

これをより大きな画面で機能させるための優れたアルゴリズムは何ですか?私はこれを試しましたが、結果はありませんでした:

publis static int translatex() {
     float p = (float)Gdx.graphics.getHeight()*340;
     return (int) p*Gdx.input.getX();
}

340は、HTCタトゥーで私が使用したベースx(私の電話のx解像度)です。では、どうすれば絶対値で大画面をサポートする関数を作成できますか。if文を変更したくありません。

4

2 に答える 2

14

とても簡単です。基本的に、ネイティブ解像度用にプログラム全体を構築しますが、ポジショニングとテクスチャのサイズ設定を扱うすべてのもので、次のようなものがあります。

private void resize()
{
    float x = Gdx.graphics.getWidth();
    float y = Gdx.graphics.getHeight();

    float changeX = x / assumeX; //being your screen size that you're developing with
    float changeY = y / assumeY;

    position = new Vector2(position.x * changeX, position.y * changeY);
    width = startWidth * changeX;
    height = startHeight * changeY;
    bounds = new Vector2 (position.x, (Gdx.graphics.getHeight() - position.y) - height);

}

基本的に、あなたがしていることは、生成されたすべてのオブジェクトを取得し、解像度のx/y値の変化に応じて増減する何かを実行することです。ネイティブから離れるほど大きくなります。何かをチェックしたり、どこかに置いたりするときは、常に希望の解像度でコーディングしますが、表示したり、プログラムの他の部分と相互作用させたりする前に、サイズ変更関数を実行します。

于 2011-05-14T21:29:03.080 に答える
3

http://www.java-gaming.org/index.php?topic=25685.0でより洗練されたソリューションを参照してください(そのソリューションに対するNateのコメントも参照してください)。

また、を使用する場合はscene2d、現在(libgdx 0.9.6)stage.setViewportメソッドにこの機能が必要ですが、実際には期待どおりに動作しないことに注意してください。

更新: setViewPortが修正されたため、これは期待どおりに機能します。

于 2012-07-14T22:29:10.590 に答える