libGDX动作:何时执行

时间:2013-12-07 11:40:46

标签: java libgdx action

我的代码:

actor.addAction(Actions.sequence(
    Actions.fadeOut(0.3f),
    Actions.run(new Runnable(){
    @Override
    public void run() {
        Gdx.app.log(TAG,"after dispear");
    }
})));
actor.remove()

我发现动作序列此时不会执行。如果我再次添加演员,它会。有人能给我一个解释吗?

3 个答案:

答案 0 :(得分:3)

actor.addAction(Actions.sequence(
    Actions.fadeOut(0.3f),
    Actions.run(new Runnable(){
       @Override
       public void run() {
          Gdx.app.log(TAG,"after dispear");
       }
    }),
    Actions.removeActor()));
//actor.remove(); remove this line.

要删除动作链中的actor,请使用“Actions.removeActor”

答案 1 :(得分:0)

您是将actor添加到舞台,然后调用act函数吗?

更多信息或代码会有所帮助。

答案 2 :(得分:0)

我认为你的问题来自不了解LibGDX行动的概念。

如果您的目标是按顺序执行操作:

  • 淡出演员,
  • 日志发生了动作,
  • 删除演员

然后你必须将actor.remove()追加到序列中。

否则,当您将代码保留为两个actor的方法时:

  • addAction
  • remove

将陆续执行。

您编码为序列的所有操作(传递给addAction方法)都设计为异步运行。 addAction方法是非阻塞的,因此,在将所有序列添加到actor的逻辑之后,您将删除整个actor并且所有魔法都没有足够的时间来评估。

从显示的代码中删除最后一行,并在序列末尾添加removeActor操作。