今日のlibGDX(20150521):stage.act(Gdx.graphics.getDeltaTime()); この部分なにしてる?

今日のlibGDX目次

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

未解決な不明点は発生次第、上の目次に追記しています!

stage.act(Gdx.graphics.getDeltaTime()); この部分なにしてる?

英語だけど、正式なjavadocを見たほうがよいので、とりあえずみてく.

Stage stage = new Stage();
stage.act(Gdx.graphics.getDeltaTime());

↑これがなにをしている?というはなし。

Stageこと、com.badlogic.gdx.scenes.scene2d.Stage クラスのactメソッドは、

public void act(float delta)

となっていて、

Calls the Actor.act(float) method on each actor in the stage. Typically called each frame. This method also fires enter and exit events.

(libGDXのjavadoc より)

↑のような説明になってて、

ステージに設定したアクターのact(float)メソッドを呼ぶようなことが書いてある.

アクターって言ってるのは、com.badlogic.gdx.scenes.scene2d.Actor のact(float)メソッドのことだと思うので、そちらを見ると

Updates the actor based on time. Typically this is called each frame by Stage.act(float).

Parameters: delta - Time in seconds since the last frame.

(libGDXのjavadoc より)

各アクターを更新するようなことが書いてあるので、

アクターに対して、表示位置だったり、アクションをアクターに設定した処理がここで反映されるのかもしれない.

というわけでやってみた。

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

actをやらずにdrawだけすると、アクションが実行されませんでした。

画像の描画位置だったり、斜めに表示したり、という静止画は表示できていますが、まったく動かなくなります。

更新というのは、アクションだったり、まあ全般てきなゲーム上での更新になるみたい。

これがないと、初期描画しかできてない感じか。

ちなみに引数のDeltaTimeというものを見ていく。

Gdxクラスのgraphicsというメンバーは、 com.badlogic.gdx.Graphics の getDeltaTime メソッドを呼んでてこれはabstractなので、

なんらかの実装クラスのメソッドを呼んでいるはずだけど、なにかわからんなあ…

the time span between the current frame and the last frame in seconds. Might be smoothed over n frames.

(libGDXのjavadoc より)

ひとまず、javadocをみると、前フレームからの時間というように読める。

デルタタイムという言葉自体知らなかったけど、直前のフレームレートからの時間差という意味らしい。

知り合いに聞いたけど、やはりこのあたりはフレームレートとかの話が絡んでいるみたいだ.

とりあえず、ないとアクションできないのはわかった。