我正在开发一个需要结束游戏对话框的游戏应用程序。
我尝试了几种方法,但是无法正常工作。
我的游戏算法的方法在单独的线程上运行。
完成游戏玩法后,在该线程中,我尝试像GameScene
那样在getChildren().add(endDialog)
的类中调用,但没有任何反应。如果我将其添加到其构造函数中,然后在游戏线程的末尾添加getChildren.get(0).toFront()
,则仍然没有任何反应。
有什么建议吗?
编辑
找到了一种可行的方法,但并不是那么完美:
setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent t) {
if(ended) {
getChildren().add(new EndDialog());
getChildren().get(25).setOpacity(0.7);
}
}
});
唯一的问题是,完成播放后,我必须再移动一次鼠标才能显示对话框。
我应该如何及时掌握
ended
字段的值? 最佳答案
您使用哪种线程?
在JavaFX中,您必须使用Service类正确执行操作,并且不要冻结GUI内容。
在此服务上,您有一个onSucceeded字段,因此,如果您收听它,则可以在完成工作后执行所需的操作。
您还可以看一下this
如果您想进行漂亮的对话,请查看ControlFX