Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как правильно запускать анимацию в отдельном потоке?


estra

Вопрос

Хочу сделать переключение TabItem'ов с 3D эффектом (Красивое 3D переключение вкладок в TabControl). Ну устройстве наблюдаются сильные тормоза при анимации, по-этому хочу запускать в отдельном потоке, но получаю ошибку ALOOPER_POLL_ERROR. Как исправить?

TTabControl_3DRotation.zip

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Вся отрисовка выполняется в отдельном потоке (известный как UI Thread), из других потоков рисовать в нем запрещено. При попытке это сделать, вы получите исключение. На андроиде оно несет название "ALOOPER_POLL_ERROR". На других платформах будет немного другой текст ошибки.  Чтобы отрисовка происходила в главном потоке (UI Thread) нужно добавить синхронизацию потоков через 

TThread.Synchronize 

или 

TThread.Queen

Однако, в этом случае ваш поток будет ожидать момент отрисовки в главном потоке и в момент отрисовки простаивать. В итоге вы получите то, от чего пытаетесь убежать. 

В вашем случае, медленная скорость анимации может зависеть от больших картинок в TTabControl. Так же она может зависеть от сложной иерархии объектов на форме.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...