今日のlibGDX目次
http://snoopopo.hatenablog.com/entry/2015/04/27/220545
今日のテーマ:Scene2D
今回も前回の続きのこちら↑の記事を参考に。
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();
こんなかんじ。上段の小さい画像がグループ化された画像群です。
ここまでのはなしで
解説いただいている内容で、
Group化することよってGroup単位での設定が出来たりするので、Groupクラスの使い方はまあわかる。
ここまででよくわからないことを明日ようにメモしときます。
・SpriteとScene2Dで何が違う? STGとかそういう話が出ているのでSpriteを使ったほうが早いとかある? 使い分けがよくわからない。
・ソースのこの部分↓が何をしてる?
stage.act(Gdx.graphics.getDeltaTime());
このあとの記事でもScene2Dの解説が続いているそうなので、そこまで見てわからなかったらもうちょっと調べてみます。
この記事の成果物
https://github.com/snoopopo/LibGDXforWindows/tree/master/src/study/scene2d