性能较慢的Javafx Scene.snapshot方法

性能较慢的Javafx Scene.snapshot方法,java,performance,javafx,javafx-2,javafx-8,Java,Performance,Javafx,Javafx 2,Javafx 8,我正在制作一个滑动动画以将一个场景切换到另一个场景,但当我调用此方法时,切换场景会有延迟。我发现原因是类Scene的方法snapshot()。 有人有解决办法吗 代码: 以这种方式拍摄快照本质上是一种缓慢的操作,在Java土地上,没有很多方法可以加快拍摄速度。正如评论中所建议的,如果你真的想拍摄快照,那么更好的方法是使用异步方法,它不会在UI线程运行时阻塞UI线程(因此,尽管它们仍然会延迟,但你的应用程序仍然会保持响应。) 但是,如果我正确理解了您的示例,那么根本就不需要使用屏幕截图——为什么要

我正在制作一个滑动动画以将一个场景切换到另一个场景,但当我调用此方法时,切换场景会有延迟。我发现原因是类
Scene
的方法
snapshot()
。 有人有解决办法吗

代码:


以这种方式拍摄快照本质上是一种缓慢的操作,在Java土地上,没有很多方法可以加快拍摄速度。正如评论中所建议的,如果你真的想拍摄快照,那么更好的方法是使用异步方法,它不会在UI线程运行时阻塞UI线程(因此,尽管它们仍然会延迟,但你的应用程序仍然会保持响应。)

但是,如果我正确理解了您的示例,那么根本就不需要使用屏幕截图——为什么要使用图像,而不仅仅是节点本身的动画?请记住,所有JavaFX元素都是scenegraph的节点,因此可以以相同的方式设置动画。因此,不是:

StackPane animation = new StackPane(leftImage, rightImage);
您应该能够做到:

StackPane animation = new StackPane(source, target);

…然后使用此选项直接为窗格设置动画,而无需经过缓慢的截图过程。

不确定您在上面想做什么。但是,为什么不对该方法进行异步调用呢?
StackPane animation = new StackPane(source, target);