Libgdx如何停止for循环,直到actor动作完成/完成
问题描述:
我已将actors添加到一个名为cells的组中,并且在for循环中我将操作添加到组中的一组特定单元。Libgdx如何停止for循环,直到actor动作完成/完成
我想这样做,直到单元格的动作完成后才开始下一次迭代循环。
for (int i = 0; i < cells.length; ++i) {
cell.addAction(fadeIn(1f));
// I need to wait here until the action has completed!
}
是否有阻塞动作我可以使用或在libgdx中的东西?还是有一种特定的方式我应该这样做?
显然我需要libgdx继续在后台运行,否则动作将不会完成,我真的不知道如何做到这一点。
我不能使用RunnableAction,因为这是执行后调用代码,我只是想停止循环迭代。
感谢,
答
相反阻断循环,你可以尝试在所计算的时间,将采取的淡入开始运行的每个动作设置的延迟。
事情是这样的:
float delay = 0;
for (int i = 0; i < cells.length; ++i) {
SequenceAction sa = Actions.sequence(Actions.delay(delay),
Actions.fadeIn(1f));
cell.addAction(sa);
delay += 1f; //Increase the delay for the duration of each fadeIn
}
没有测试该寿。
+0
非常好,我喜欢它谢谢。 – Prolog 2015-03-02 16:03:48
下面的答案是正确的。只是想指出,libgdx中的所有内容都发生在单个线程中,所以你永远不想阻止线程等待某件事......这只会让你的游戏冻结。如果您在代码中阻止了上面注释过的线程,则该行为永远不会真正开始。你需要考虑你的事件和有定时器的行为。在下面的答案中,每个动作会得到一个延迟(一个倒数计时器),所有动作将同时进行倒计时,但是它们会在不同的时间触发。 – Tenfour04 2015-03-02 15:21:47