我正在开发一个需要结束游戏对话框的游戏应用程序。
我尝试了几种方法,但是无法正常工作。

我的游戏算法的方法在单独的线程上运行。
完成游戏玩法后,在该线程中,我尝试像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

09-27 19:17