JavaFX Robot.getScreenCapture导致场景没有事先更新



我有一个选项菜单,你可以在其中保存游戏,它应该简短地关闭菜单,并采取当前游戏的截图。然而,菜单直到调用getScreenCapture之后才关闭,即使它在运行之前导致屏幕截图始终是设置菜单。

(屏幕截图本身是工作的,它只是控制屏幕截图时显示的内容)

! !如果没有截图行,它会立即更新场景,即使场景更改行出现在前面。

到目前为止,我已经尝试线程。休眠,但没有时间长度允许场景更新

//保存的初始调用:

private void saveRoom() {
program.changeState(previous);
room.save();
}

//场景的变化:(State extends Scene)

public void changeState(State state) {
currentState = state;
stage.setScene(currentState);
currentState.paintAll();
}

//游戏场景如何绘制到屏幕上:

@Override
public void paintAll() {
ArrayList<Shape> toAdd = new ArrayList<>();
for(Furniture f : furniture) {
f.paint(toAdd);
}
optionsButton.paint(toAdd);
addFurnitureButton.paint(toAdd);
root.getChildren().clear();
root.getChildren().addAll(toAdd);
}

//选项菜单如何绘制到屏幕上(与游戏相同):

@Override
public void paintAll() {
ArrayList<Shape> toAdd = new ArrayList<>();

toolsButton.paint(toAdd);
saveButton.paint(toAdd);
saveAndExitButton.paint(toAdd);
exitButton.paint(toAdd);
closeButton.paint(toAdd);

root.getChildren().clear();
root.getChildren().addAll(toAdd);
}

//捕获命令:

robot.getScreenCapture(null, new Rectangle2D(x,y,x1,y1));

更新:我现在使用场景。snapshot命令采取截图,而不是它不会导致问题,但我仍然愿意找出如何去使用机器人采取截图,因为不像场景。快照,它可以捕捉整个屏幕,而不仅仅是程序,这在将来的项目中可能会派上用场。

最新更新