如何让演员在Libgdx中一个接一个地执行特定操作

时间:2015-01-19 08:31:21

标签: android libgdx action

我有三个问题。>。<

  1. 我有2个演员(actor1,actor2)和一个动作(例如ScaleTo)。我愿意让actor1首先做scale,然后(也许是两秒钟后)actor2。或者随机选择演员来表现动作,并重复这个过程n次。

  2. 有没有像squenceAction这样的方法,但可能就像这个“序列(Actor1.action,delay,Actor2.action,......)”

  3. 或者是否有时间线API,我可以将演员的动作放在几个特定的​​时间点上?

1 个答案:

答案 0 :(得分:1)

如果是更正确的方式,那就不行了,但是如果我理解了你的问题,你可以把你的问题放在你的听众身上,例如:

Actor1.addAction(Actions.sequence(Actions.delay(0.1f),
                                 Actions.parallel(
                                 Actions.moveBy(0f, 600, 1f),
                                 Actions.fadeOut(0.8f))));

并在你的渲染中:

if (Actor1.getActions().size == 0) {

Actor2.addAction(Actions.sequence(Actions.delay(0.2f),
                                  Actions.parallel(
                                  Actions.moveBy(0f, 600, 1f),
                                  Actions.fadeOut(0.8f))));

//Actor1.addAction(Actions......add actions to the actor one again or
// whatever you can think is that it's not what you really want to do,
// but you can handle yourself with the method called from the if
}

取决于你想要做什么,我认为最好的是第一个演员完成动作多长时间,例如在2秒之前,将它放在第二个演员的第二个延迟时间,以便开始amimacion in第二个演员。

测试:0.2f + 1.8,而不是+ fadeOut因为并行

Actor1.addAction(Actions.sequence(Actions.delay(0.2f),
                                 Actions.parallel(
                                 Actions.moveBy(0f, 600, 1.8f),
                                 Actions.fadeOut(0.8f))));

添加延迟; 2.1f

Actor2.addAction(Actions.sequence(Actions.delay(2.1f),
                                  Actions.parallel(
                                  Actions.moveBy(0f, 600, 1f),
                                  Actions.fadeOut(0.8f))));
P.S:我希望你能理解我说的话。