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

[Android] TAnimator.AnimateFloatWait как работает


brunnengi

Вопрос

Здравствуйте.

TAnimator.AnimateFloatWait работает не корректно или я его не так использую?
Вроде он должен производить анимацию и после её окончания продолжить код что идёт следом.
В этом то и отличии от обычной анимации без Wait, которая выполняется сама и основной код не ждет её завершения.
Раньше всё было хорошо. Но сейчас AnimateFloatWait просто замирает, проходит время отведенное на анимацию (самой анимации нет) и потом сразу уже готовый результат.
Т.е. если мы захотим с помощью AnimateFloatWait передвинуть кнопку на 50px за 3  сек., то после запуска, ничего не будет происходить 3 секунды, а потом кнопка резко окажется там где она должна быть согласно анимации. Только вот анимации нет.
Кто уже натыкался на это и как с этим бороться?
 

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

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

  • 0

Версия, платформа?

В Токио под Андроид действительно была похожая проблема, мы ее так и не решили.
Под Виндовс и иОС все работало правильно.
Смутно помню, что были сторонние исходники, решающие эту проблему. 
Kastri Free если не ошибаюсь.

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

Обычная анимация то работает.

Да и в старых версиях нормально всё было.

Не думаю что проблема в мощности аппарата или её не хватки.

Изменено пользователем brunnengi
Ссылка на комментарий
  • 0

думаю, речь идет о том, что в конце анимации, она дергает событие - "я всё". "заморозку" программы до наступления этого события нужно сделать самостоятельно

я правильно понял?

Ссылка на комментарий
  • 0
  • Администраторы

Почему?

Андроид не поддерживает конструкции типа:

while Flag do
  Application.ProcessMessage;

Поскольку Андроид не позволяет запускать внутреннюю петлю обработки сообщений и выполнять обработку сообщений из главной очереди. Именно по этому не используйте этот паттерн в принципе.

Любая анимация вида AnimateXXXAndWait внутри себя использует этот шаблон. Поэтому банально анимация выполняется, но отрисовки не будет. Так как сообщение на отрисовку будет обработано уже в главной петле обработки сообщения после возврата управления (выхода из этого паттерна). 

На что заменить?

Не использовать синхронную анимацию в принципе! Заменить синхронный на асинхронный вариант с коллбеком завершения.

Ссылка на комментарий
  • 0
8 часов назад, Brovin Yaroslav сказал:

На что заменить?

Не использовать синхронную анимацию в принципе! Заменить синхронный на асинхронный вариант с коллбеком завершения.

Если можно пример, как это грамотно сделать...

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...