JavaFX动画闪烁

时间:2015-12-17 21:57:59

标签: animation javafx flicker artifacts

我有一个窗口,显示一个视频流,其中有一个Twitter Feed作为叠加层。 当显示新推文时,当前推文使用旋转动画制作动画,下一条推文将旋转到视图中。动画使用RotateTransition执行。

该应用程序还可以在不同的摄像头之间切换以显示不同的流。为了说明应用程序切换到下一个摄像头的时间,我有一个使用Timeline对象填充的进度条。

这很有效,直到我调整窗口大小。旋转动画开始闪烁,随着逐渐填充的进度条一起闪烁。

作为测试,我禁用了视频流,看看发生了什么。 '神器'然后不会发生,我可以根据需要调整大小。如果我播放流并且没有调整大小,一切都运行良好。

视频播放器基于VLCJ,但实际像素位于WritableImage的{​​{1}}上。

请参阅以下说明问题的图片。

Normal mode, no video playing

Bugged mode, while video playing

在右下方,您可以看到2个不同的进度条(ImageviewProgresBar)。

闪烁结果的一部分在第二张图像下方仍然可见。它在某种程度上保持可见,可能是因为该区域没有被重新绘制。

知道闪烁发生的原因吗?我有什么办法可以解决或避免这种情况吗?

我在IntelliJ中尝试了一些VM选项:ProgressIndicator以某种方式启用硬件加速,但这似乎没什么帮助。

禁用进度条填充动画也无济于事。

1 个答案:

答案 0 :(得分:1)

我遇到类似的问题,一些弧线和形状会在其属性/尺寸发生变化时闪烁。

我的问题的解决方案是确保用于更改形状的方法是从JavaFX线程内部调用的。

Platform.runLater(() -> {
    arc.setStartAngle(30);
    arc.setLength(45);
}