我今天才剛剛開始學習JavaFX,並試圖通過創建Snake克隆來了解更多信息,但我遇到了線程問題。我想創建一個線程來更新蛇在屏幕上的位置,但不能以普通的Runnable線程方式使用它,因爲我使用該線程內的JavaFX來更新繪製到屏幕上的矩形的位置(我學習了你不能這樣做,而必須使用Tasks,Services,Platform.runLater等)我創建線程的類擴展了JavaFX.scene.layout.Pane,並且我試圖使用一個任務來更新蛇的位置。我的問題是:該任務似乎只運行一次或兩次並退出,沒有給我任何中斷。JavaFX任務結束和JavaFX線程
構造擴展窗格中的類(蛇類擴展集團):
public GameFrame(){
this.setPrefSize(800, 600);
Snake snake = new Snake();
this.getChildren().add(snake);
taskThread = new Thread(new Task<Void>() {
protected Void call() throws Exception {
while(!Thread.currentThread().isInterrupted()){
snake.updatePosition();
try{
Thread.sleep(1000);
} catch(InterruptedException e){
break;
}
}
return null;
}
});
taskThread.start();
}
我覺得我並沒有真正掌握什麼是最好的事情在這裏做的,什麼我想做可能是駭人聽聞的。對於我應該做什麼或者我該如何解決這個問題有什麼建議嗎?