今日のlibGDX(20150511):Scene2D

今日のlibGDX目次

http://snoopopo.hatenablog.com/entry/2015/04/27/220545

今日のテーマ:Scene2D

qiita.com

今回も前回の続きのこちら↑の記事を参考に。

Scene2Dで使うクラス

ここで解説してもらっているのは以下の4クラス。

・com.badlogic.gdx.scenes.scene2d.Actor

・com.badlogic.gdx.scenes.scene2d.Stage

・com.badlogic.gdx.scenes.scene2d.Group

・com.badlogic.gdx.scenes.scene2d.ui.Image

Imageだけパッケージ違うので注意。

ImageもGroupもActorの子クラスで、解説してもらっているとおり、

StageクラスのaddActor(Actor)メソッドで、Stageクラスに、階層的に登録していくかんじみたいだ。

画像を読み込む部分

テクスチャとテクスチャアトラスの両方ともとりこんでみます。

       //1ファイル丸ごと読み込む
        Texture texture = new Texture("img\\snoopopo-.png");
        Image image1 = new Image(texture);
        image1.setPosition(0, 0);

        //テクスチャアトラス
        FileHandle handle = Gdx.files.internal("img\\textureAtlasSample.txt");
        TextureAtlas atlas = new TextureAtlas(handle);
        TextureAtlas.AtlasRegion region1 = atlas.findRegion("CC_M_aruka1");
        Image image2 = new Image(region1);
        image2.setPosition(100, 0);

前回やったSpriteと変わらず、Imageクラスはテクスチャでもテクスチャアトラスでもどっちでも書きかたを統一してくれてます。

ステージに格納する部分

今回は画像を複数読み込んで、その一部分だけグループ化したものをステージに追加します.

       //ステージ
        stage = new Stage();
        
        stage.addActor(image1);//これはステージ直下に格納

        //グループ
        Group group = new Group();    //グループを作って
        group.setPosition(0, 200);    //グループの位置決めて
        stage.addActor(group);  //グループをステージ直下に格納

        //グループ化する画像たち
        group.addActor(image3);   //グループに画像を設定

描画する部分

今まではSpriteBathを使ってて, begin()とend()の間でdrawしてたけど、そういうのもいらなくなった。

       stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();

こんなかんじ。上段の小さい画像がグループ化された画像群です。 f:id:snoopopo:20150512070855p:plain

ここまでのはなしで

解説いただいている内容で、

Group化することよってGroup単位での設定が出来たりするので、Groupクラスの使い方はまあわかる。

ここまででよくわからないことを明日ようにメモしときます。

・SpriteとScene2Dで何が違う? STGとかそういう話が出ているのでSpriteを使ったほうが早いとかある? 使い分けがよくわからない。

・ソースのこの部分↓が何をしてる?

       stage.act(Gdx.graphics.getDeltaTime());

このあとの記事でもScene2Dの解説が続いているそうなので、そこまで見てわからなかったらもうちょっと調べてみます。

この記事の成果物

https://github.com/snoopopo/LibGDXforWindows/tree/master/src/study/scene2d