【发布时间】:2015-12-17 21:57:59
【问题描述】:
我有一个窗口显示一个带有 twitter 提要的视频流作为叠加层。
当显示一条新推文时,当前推文会使用旋转动画进行动画处理,并且下一条推文会旋转到视图中。使用RotateTransition 执行动画。
该应用还可以在不同的摄像头之间切换以显示不同的流。为了指示应用何时切换到下一个摄像头,我有一个使用Timeline 对象填充的进度条。
这很好用,直到我调整窗口大小。旋转动画开始闪烁,随着进度条逐渐填满。
作为测试,我禁用了视频流,看看发生了什么。那时不会出现“工件”,我可以根据需要调整大小。如果我播放流并且不调整大小,则一切正常。
视频播放器基于 VLCJ,但实际像素是在 WritableImage 上绘制的 Imageview。
请参阅以下说明问题的图片。
在右下角,您可以看到 2 个不同的进度条(ProgresBar 和 ProgressIndicator)。
部分闪烁结果在第二张图片下方仍然可见。它以某种方式保持可见,可能是因为该区域没有被重绘。
知道是什么导致了闪烁吗?我能做些什么来解决或避免这种情况吗?
我尝试了 IntelliJ 中的一些 VM 选项:-Dsun.java2d.d3d=true -Dprism.forceGPU=true 以某种方式启用硬件加速,但这似乎没有帮助。
禁用进度条填充动画也无济于事。
【问题讨论】:
标签: animation javafx flicker artifacts