【发布时间】:2014-07-24 03:00:21
【问题描述】:
我今天才刚刚开始学习 JavaFX,我试图通过制作 Snake 克隆来了解更多关于它的知识,但我在线程方面遇到了问题。我想创建一个线程来更新蛇在屏幕上的位置,但不能以正常的 Runnable 线程方式使用一个线程,因为我在该线程中使用 JavaFX 来更新绘制到屏幕上的矩形的位置(我学到了您不能这样做,而是必须使用 Tasks、Services、Platform.runLater 等?)我从扩展 JavaFX.scene.layout.Pane 创建线程的类,我正在尝试使用任务来更新蛇位置.我的问题是:任务似乎只运行一次或两次并退出,没有我给任何中断。
扩展 Pane 的类的构造函数(Snake 类扩展 Group):
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();
}
我觉得我实际上并没有掌握在这里做的最好的事情是什么,而我正在尝试做的事情可能是骇人听闻的。对我应该做什么或如何解决这个问题有什么建议吗?
【问题讨论】:
标签: java multithreading javafx