Android StudioとlibGDXでアプリ開発 練習編2

前回の記事ではlibGDXのライフサイクルとログの出し方を紹介しました。
今回は描画に関する機能を紹介します。

画像を表示する

サンプルコードを参考に解説していきます。

core\src\com\mygdx\game\MyGdxGame.java

    SpriteBatch batch;
    Texture img;
    
    @Override
    public void create () {
        // SpriteBatchを初期化
        batch = new SpriteBatch();
        // Textureにはbadlogic.jpgファイルを指定して初期化
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        // 画面を赤で初期化
        // 引数は(Red, Green, Blue, Alpha)です
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        // 下記のように記述することも可能です
        // Gdx.gl.glClearColor(0xff, 0x00, 0x00, 0xff);
        // Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        // 描画処理開始
        batch.begin();

        // 座標x=0、Y=0に画像を描画
        batch.draw(img, 0, 0);

        // 描画処理終了
        batch.end();
    }

    @Override
    public void dispose () {
        // SpriteBatchを解放
        batch.dispose();
        // Textureを解放
        img.dispose();
    }

SpriteBatchは描画に必要なクラスです。
SpriteBatchのbeginからendまでに行われた処理が実際の画面に反映されます。
サンプルコードをビルドして実行すると真っ赤な画面に画像が表示されています。

またlibGDXでは特定のクラスを扱った場合はdisposeメソッドにて手動で解放処理を行う必要があります。
もし解放処理を行わないとメモリリークが発生します。
以下のページにメモリ管理に関する詳細が記載されています。

https://github.com/libgdx/libgdx/wiki/Memory-management

座標を変更する

libGDXの原点座標(0, 0)は左下になります。Xは右側、Yは上側の方向に伸びます。
ためしにbatch.drawの引数を以下のように変更してビルド、実行すると表示されるX軸の位置がランダムに変化します。

        // 座標x=0から100の間、Y=0に画像を描画
        batch.draw(img, MathUtils.random(100), 0);

描画頻度を手動に切り替える

libGDXはデフォルトで、常に継続してrenderメソッドが呼ばれている状態です。
アクションゲームなどの変化が激しい場合は良いですが、画面にあまり変化のないゲームでは過剰な描画です。
そのためボタンを押したときなどイベントをきっかけに描画したほうが電池消耗を抑えることができます。
以下のページに描画頻度の切り替えに関する記載があります。

https://github.com/libgdx/libgdx/wiki/Continuous-%26-non-continuous-rendering

createメソッドに下記のコードを実装することで描画頻度を手動に切り替えるすることができます。
元に戻す場合はfalseをtrueに設定します。

    Gdx.graphics.setContinuousRendering(false);

手動で描画を実行する場合は下記のコードを実装します。
このコードが実行されるとrenderメソッドが呼ばれます。

    Gdx.graphics.requestRendering();

まとめ

今回は画像の描画と座標に関して紹介しました。
描画はたくさんの機能があるので今後も取り上げていきます。

カテゴリー: Android タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です