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