Libgdx如何停止for循环,直到actor动作完成/完成

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,因为这是执行后调用代码,我只是想停止循环迭代。

感谢,

+1

下面的答案是正确的。只是想指出,libgdx中的所有内容都发生在单个线程中,所以你永远不想阻止线程等待某件事......这只会让你的游戏冻结。如果您在代码中阻止了上面注释过的线程,则该行为永远不会真正开始。你需要考虑你的事件和有定时器的行为。在下面的答案中,每个动作会得到一个延迟(一个倒数计时器),所有动作将同时进行倒计时,但是它们会在不同的时间触发。 – Tenfour04 2015-03-02 15:21:47

相反阻断循环,你可以尝试在所计算的时间,将采取的淡入开始运行的每个动作设置的延迟。

事情是这样的:

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