我有一个窗口,显示一个视频流,其中有一个Twitter Feed作为叠加层。
当显示新推文时,当前推文使用旋转动画制作动画,下一条推文将旋转到视图中。动画使用RotateTransition
执行。
该应用程序还可以在不同的摄像头之间切换以显示不同的流。为了说明应用程序切换到下一个摄像头的时间,我有一个使用Timeline
对象填充的进度条。
这很有效,直到我调整窗口大小。旋转动画开始闪烁,随着逐渐填充的进度条一起闪烁。
作为测试,我禁用了视频流,看看发生了什么。 '神器'然后不会发生,我可以根据需要调整大小。如果我播放流并且没有调整大小,一切都运行良好。
视频播放器基于VLCJ,但实际像素位于WritableImage
的{{1}}上。
请参阅以下说明问题的图片。
在右下方,您可以看到2个不同的进度条(Imageview
和ProgresBar
)。
闪烁结果的一部分在第二张图像下方仍然可见。它在某种程度上保持可见,可能是因为该区域没有被重新绘制。
知道闪烁发生的原因吗?我有什么办法可以解决或避免这种情况吗?
我在IntelliJ中尝试了一些VM选项:ProgressIndicator
以某种方式启用硬件加速,但这似乎没什么帮助。
禁用进度条填充动画也无济于事。
答案 0 :(得分:1)
我遇到类似的问题,一些弧线和形状会在其属性/尺寸发生变化时闪烁。
我的问题的解决方案是确保用于更改形状的方法是从JavaFX线程内部调用的。
Platform.runLater(() -> {
arc.setStartAngle(30);
arc.setLength(45);
}