У меня есть окно, показывающее видеопоток с твиттером в качестве наложения. Когда отображается новый твит, текущий твит оживляет анимацию вращения, а следующий твит поворачивается в поле зрения. Анимации выполняются с использованием RotateTransition
.Анимации JavaFX мерцают
Приложение также переключается между различными камерами для отображения различных потоков. Чтобы указать, когда приложение переключается на следующую камеру, у меня есть индикатор прогресса, который заполняется с использованием объекта Timeline
.
Это хорошо работает, пока я не изменил размер окна. Вращающиеся анимации начинают мерцать вместе с прогрессивными барами по мере их постепенного заполнения.
В качестве теста я отключил видеопоток, чтобы узнать, что происходит. Тогда «артефакт» не возникает, и я могу изменять размер столько, сколько хочу. Если я играю в поток и не изменяю его размер, все работает хорошо.
Видеопроигрыватель основан на VLCJ, но фактические пиксели рисуются на WritableImage
в Imageview
.
Показать все изображения, которые иллюстрируют неполадку.
В правом нижнем углу вы можете увидеть 2 различных баров выполнения (ProgresBar
и ProgressIndicator
).
Часть мерцающего результата все еще видна под вторым изображением. Это как-то остается видимым, вероятно, потому, что область не перерисовывается.
Любая идея, что делает мерцание, случается? Есть ли что-нибудь, что я могу сделать, чтобы исправить или избежать этого?
Я попробовал несколько опций VM в IntelliJ: -Dsun.java2d.d3d=true -Dprism.forceGPU=true
, чтобы каким-то образом включить аппаратное ускорение, но это, похоже, не помогает.
Отключение анимации заливки progressbar также не помогает.