libGDX动作:它们何时执行

3

我的代码:

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

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

你正在移除演员,这可能是原因 :p - Daahrien
3个回答

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.

要在动作链中删除演员,请使用“Actions.removeActor”


0
你把演员添加到舞台上,并调用了act函数吗?
提供一些更多信息或代码会很有帮助。

0

我想你的问题可能是因为没有理解LibGDX动作的概念。

如果你的目标是按照以下顺序执行动作:

  • 淡出演员,
  • 记录已发生的动作,
  • 移除演员

那么你必须将actor.remove()附加到序列中。

否则,当你保留代码时,两个演员方法:

  • addAction
  • remove

将一个接一个地执行。

你编写的所有序列动作(传递给addAction方法)都设计为异步运行。 addAction方法是非阻塞的,因此,在将整个序列添加到演员逻辑之后立即删除整个演员,所有魔法都没有足够的时间进行评估。

从所提供的代码中删除最后一行,并在序列末尾添加removeActor动作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接