如何检测Android的Libgdx(0.9.7)中的行动的结束

在最新版本的Libgdx (0.9.7或libgdx-nightly-20120904)中, 动作侦听器被删除。所以我不知道如何有效地完成我的function:

  1. 精灵移动到目的地。
  2. 该运动包含许多MoveToAction或MoveByActions。
  3. 在前一个结束后执行以下操作。
  4. 其余的动作可能会在行动之前被修改。

实际上,主要的一点就是如何在上一个行动结束之后采取行动,而我认为比较行动时间不是一个明智的方法。

有谁能够帮助我? 谢谢 !

我认为最好的办法是保持简单。 您可以查询演员是否有任何剩余的行动

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步)。

如果你需要更具体的东西,请再问一次。 您还可以查看Actor类源代码,以更好地理解如何处理操作。 https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/scenes/scene2d/Actor.java

不知道这是否回答你的问题,但这是模拟“动作完成的监听者”的一种方法:

 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 )

libgdx 0.9.7

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

警告在检查行动isDone:

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/