我想實現這樣的使用JavaFX程序從函數返回:等待PathTransition完成,直到JavaFX的
我們擁有一批現場Foo類型的對象(這是由所示界)。
它們中的每一個都有一個名爲move()的方法,它可以將對象移動到場景中的另一個位置。然後它找到另一個對象(通過調用另一個方法)並在找到的對象上調用move方法。這件事情是這樣的:
class Foo {
Circle circle;
void move() {
// change circle location
// HERE, I WANT TO WAIT UNTIL CIRCLE HAS MOVED ON THE SCENE
Foo f = findNextFoo();
foo.move();
}
}
我想圓運動是可見的和連續的用戶,但是當我經常使用PathTransition,所有對象的移動,在(幾乎)同時,由於每個PathTransition正在運行一個新線程,並且在其play()
之後,函數將繼續並調用findNextFoo()
方法。
我已經嘗試使用setOnFinished作爲PathTransition來更改標誌,當它完成後,然後使用while(true)
等待,直到標誌被設置爲true,然後調用foo.move()
方法。這也不起作用,並使我的程序崩潰。
Thread.sleep()方法也沒有工作,我想要的方式(所有的動作都是一個延遲之後,但在同一時間內完成)。
任何幫助,將不勝感激,謝謝。
非常感謝您的幫助。等待轉換完成從函數返回後怎麼辦? – Karegar
不,你不能這樣做,因爲你阻塞了負責執行動畫和'onFinished'處理程序的應用程序線程。 (除非你使用非公開的API或java9的API,見https://stackoverflow.com/questions/46369046/how-to-wait-for-user-input-on-javafx-application-thread-without-using -showandwai) – fabian