Элементы управления FireMonkey не анимируются плавно

Фон

Я создал графический интерфейс с использованием некоторых элементов управления FireMonkey.

  • Некоторые элементы управления анимированы, и их внешний вид обновляется автоматически.
  • Некоторые элементы управления обновляются только в ответ на взаимодействие с пользователем (ползунки и т.д.).

Проблема

Взаимодействие с пользовательскими элементами управления предотвращает обновление анимированных элементов управления, что приводит к рывкам и прерывистой анимации.

Видео глючной анимации

Анимированный элемент управления на видео выше управляется компонентом TTimer. Проблема сохраняется при использовании компонентов анимации FireMonkey.

Расследование

Элементы управления ползунком вызывают Repaint() при регулировке. Плавная регулировка ползунка создает плотный поток вызовов Repaint(), который блокирует обновление других элементов управления.

Что делать?

Замораживание анимации при постоянном обновлении одного элемента управления не подходит для моего приложения. Моя первая мысль - заменить вызовы Repaint() на что-то похожее на метод VCL Invalidate(), но у FireMonkey нет ничего сопоставимого AFAIK.

Есть ли хорошее обходное решение для этой проблемы?

9
задан Shannon Matthews 7 December 2011 в 06:13
поделиться