【发布时间】:2014-06-06 05:36:59
【问题描述】:
在 JavaFX 中,我使用 stage1.hide(); 从一个阶段切换到另一个阶段; stage2.show();
然而,stage2 相当大,包含一大堆元素。所以当我 show() 它第一次弹出时,有一个 400 毫秒的时间段,整个舞台是空的和灰色的。然后所有元素都出现了。
太丑了。这是在具有非常好的 GPU 的 i7 上。
我注意到,如果我先显示它,然后隐藏它,然后再显示它,最终的节目会从它出现在屏幕上的那一刻起看起来很完美。但是,当我第一次 hide() 然后 show() 舞台时会闪烁,所以这不起作用。
是否有可能实现我在上一段中描述的内容,而不必事先让舞台出现在屏幕上?
这是在带有新 Modena 主题的 Java 8u5 上。值得注意的是,JavaFX 2.2 不存在此问题。
谢谢!
【问题讨论】:
-
您可能在 FX 线程上做了太多事情 - 您不能在单独的线程上卸载一些构造吗?
-
奇怪的是,这在一个 JavaFX 版本中会成为问题,而在另一个版本中则不会。 mcve 可能吗?它对latest development version 更有效吗?你使用 FXML 还是 3D?
-
@assylias 这是一个有趣的想法,我会尝试并报告。也就是说,我当前的代码目前所做的是:“做一些处理”(jfx 线程),然后是 show()。所以我不确定在演出前卸载处理会有什么影响。
-
@jewelsea 正在下载并尝试 ldv,将反馈。根本没有3D。 MCVE 可能是不可能的,因为我不知道是什么真正导致了这个问题——除了我预感他们同时在舞台上出现了太多的元素。我会试验的!
-
YEEEEEEEASSS!我更新到 8u20 b17 并且 boom 问题消失了。没有那个可怕的灰屏,舞台加载要好得多。它甚至打开得更快。如果您想在下面发布它作为答案,我可以投票/接受等。谢谢您 Jewelsea!