2015-03-02 113 views
0

我已將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

回答

3

相反阻斷循環,你可以嘗試在所計算的時間,將採取的淡入開始運行的每個動作設置的延遲。

事情是這樣的:

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