我正在编写一个小游戏。当在游戏中按下ESC键时,我想显示一个悬停在模糊的游戏菜单上方的暂停菜单。
我的做法是创建一个新场景,该场景包含一个StackPane覆盖了之前的根和暂停菜单根,然后我将之前根的不透明度设置为0.4。
然后,当点击暂停菜单中的恢复按钮时,我将不透明度改回1,并将之前的场景放回舞台,但此时该场景却被冻结了。有人知道原因吗?能帮助我实现这个吗?
这里是我创建新场景并将其放置在舞台上的部分代码:
然后,当点击暂停菜单中的恢复按钮时,我将不透明度改回1,并将之前的场景放回舞台,但此时该场景却被冻结了。有人知道原因吗?能帮助我实现这个吗?
这里是我创建新场景并将其放置在舞台上的部分代码:
StackPane wrapper = new StackPane();
previousScene = main.getPrimaryStage().getScene();
previousScene.getRoot().setOpacity(.4);
vBox.setId("pausedWrapper");
wrapper.getChildren().add(previousScene.getRoot());
wrapper.getChildren().add(vBox);
scene = new Scene(wrapper, 1200, 700);
return scene;
这里是我将其改回原来位置的部分:
resumeGame.setOnAction(event -> {
System.out.println("game resumed!");
previousScene.getRoot().setOpacity(1);
main.getPrimaryStage().setScene(previousScene);
});
但是它不起作用,不透明度没有恢复正常,奇怪的是当我勾选声音框时,音乐会播放,但框没有被勾选,就像一切都在运行,但视图被冻结。
primaryStage.getScene().getRoot().setDisable(true);
,在隐藏它时调用primaryStage.getScene().getRoot().setDisable(false);
。尝试各种组合(并阅读文档):其中一个可能会给您所需的结果。 - James_D