9

最新バージョンのLibgdx(0.9.7またはlibgdx-nightly-20120904)では、アクションリスナーが削除されているため、関数を効率的に完了する方法がわかりません。

  1. スプライトを宛先に移動します。
  2. ムーブメントには多くのMoveToActionsまたはMoveByActionsが含まれています。
  3. 前のアクションが終了した後、次のアクションを実行します。
  4. 残りのアクションは、アクションの前に変更できます。

実は、前のアクションが終わってから次のアクションをどうやって行動するかがポイントで、行動時間を比較するのは賢明な方法ではないと思います。

誰か助けてもらえますか?ありがとう !

4

4 に答える 4

43

これがあなたの質問に答えるかどうかはわかりませんが、これは「アクション完了リスナー」をシミュレートする1​​つの方法です。

Action completeAction = new Action(){
    public boolean act( float delta ) {
        // Do your stuff
        return true;
    }
};

Action actions = sequence(fadeIn(1f), fadeOut(1f), completeAction);

(出典:http ://steigert.blogspot.com.br/2012/07/13-libgdx-tutorial-libgdx-refactoring.html )

于 2013-02-26T10:43:13.300 に答える
9

シンプルにするのが一番いいと思います。アクターにアクションが残っているかどうかをポーリングするには、

if (actor.getActions().size > 0) {no actions left!!} 

そのコードを配置するのに適した場所は、actor.act()の近くです。

とにかく、sequenceActionを使用して一連のアクションを実行できます。

import static com.badlogic.gdx.scenes.scene2d.actions.Actions.*; 
...
actor.addAction(sequence(moveTo(200, 100, 2), moveBy(20,30, 3), delay(0.5f), rotateTo(180, 5)));

それはそれらが終了するときに次々にそれらのアクションを実行するでしょう。

詳細については、nightliesのドキュメントをここで確認できます:http ://code.google.com/p/libgdx/wiki/scene2d

それはあなたが必要なものですか?(ステップ4を理解したかどうかはわかりません)。

より具体的なものが必要な場合は、もう一度お問い合わせください。また、アクタークラスのソースコードを調べて、アクションがどのように処理されるかをよりよく理解することもできます。 https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/scenes/scene2d/Actor.java

于 2012-09-04T15:07:08.347 に答える
3

libgdx 0.9.7

Action a = new Action();
render(){
   if (a.getTime >= a.getDuration())
      Gdx.app.log("a", "is done");
}

チェックアクションの警告は完了です:

その間

delayAction.getTime> 0および(delayAction.getTime <delayAction.getDuration)

それから

alpha.getTime> alpha.getDuration

それまで

delayAction.getTime>delayAction.getDuration。

例:

AlphaAction alpha = new AlphaAction();
alpha.setAlpha(0.2f);
alpha.setDuration(1);

DelayAction delayAction = new DelayAction();
delayAction.setDuration(1);

SequenceAction sequenceAction = new SequenceAction();
sequenceAction.addAction(alpha);
sequenceAction.addAction(delayAction);

詳細はhttp://congdongandroid.vn/をご覧ください

于 2013-01-03T09:43:22.490 に答える
1

使用Actions.run

Action action = Actions.sequence(
        Actions.delay(1f),
        Actions.run(new Runnable() {
            @Override public void run() {
                //  end of action
            }
        })
);
于 2020-09-29T20:34:33.550 に答える