今日のlibGDX目次
http://snoopopo.hatenablog.com/entry/2015/04/27/220545
今日のテーマ:com.badlogic.gdx.graphics.g2d.Sprite
今回もこちら↑の記事を参考に。
そもそもなのでおさらい
上の参考にさせて頂いている記事で、言ってることは
1ファイル丸ごと読み込むのと、テクスチャアトラスで1ファイルの部分を使うのとで、 コードの書き方が違う、でもそれを意識しないように間にSpriteクラスが入って、書きかたを統一できるということだと思う.
というわけで期間も開いてしまったし、今までやったことなのでおさらい.
・1ファイル1テクスチャの書きかた
//読込 @Override public void create() { batch = new SpriteBatch(); texture = new Texture("img\\snoopopo-.png"); texture2 = new Texture("img\\kinchan_left.gif"); } //描画 @Override public void render() { batch.begin(); batch.draw(texture, 150, 200); batch.draw(texture2, 100, 150); batch.end(); }
・テクスチャアトラスを使った書きかた
//読込 @Override public void create() { batch = new SpriteBatch(); FileHandle handle = Gdx.files.internal("img\\textureAtlasSample.txt"); atlas = new TextureAtlas(handle); } //描画 @Override public void render() { batch.begin(); TextureAtlas.AtlasRegion region = atlas.findRegion("CC_M_aruka1"); batch.end(); }
読み込み方も描画の仕方もことなってる.
com.badlogic.gdx.graphics.g2d.Spriteを使う
・読込
@Override public void create() { batch = new SpriteBatch(); //1ファイル丸ごと読み込む Texture texture = new Texture("img\\snoopopo-.png"); sp1 = new Sprite(texture); sp1.setPosition(0, 0); //テクスチャアトラス FileHandle handle = Gdx.files.internal("img\\textureAtlasSample.txt"); TextureAtlas atlas = new TextureAtlas(handle); TextureAtlas.AtlasRegion region1 = atlas.findRegion("CC_M_aruka1"); sp2 = new Sprite(region1); sp2.setPosition(0, 100); }
生成したTextureのオブジェクトも、TextureAtlas.AtralRegionオブジェクトもSpriteのコンストラクタに渡してあげると、 その違いを吸収できる.
public Sprite(Texture texture) {
と、
public Sprite(TextureRegion region) {
TextureAtlas.AtralRegion は, com.badlogic.gdx.graphics.g2d.TextureRegion の子クラスでした.
Spriteのインスタンスごとに、拡大したり斜めにする情報を保持しているので、その設定単位でSpriteインスタンスを作るかんじか.(画像ごとでもチップ毎でもない)
・描画
@Override public void render() { Gdx.gl.glClearColor(0, 0, 0.2f, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.begin(); sp1.draw(batch); sp2.draw(batch); batch.end(); }
どちらの方法で画像を読み込んでも、 public void draw(Batch batch) を呼ぶだけのシンプルな形になった.