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

Проблема с анимацией


Martifan

Вопрос

Доброго времени суток

есть маленькая проблема я в приложение решил использовать анимацию, но анимация появляется с задержками и тормозит вот я пример выложил проблема появляется тогда когда меняю значение Height если его не менять нету никакие проблемы и ничего не тормозит. подскажите пожалуйста есть какой нибудь решение или не стоит использовать анимацию
заранее спасибо

P.S. на iOS не тормозит только на Android

Test.rar

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

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

  • 0
  • Модераторы

ну вы же понимаете как работает анимация?

1) реорганизация положения контрола на родителе

2) реорганизация положения компонентов внутри контрола

3) сработает ресайз контрола и всех его дочерних компонентов, что вызовет содержащий в обработчиках код

если высота контрола для которого применяется анимация равна 100 пикселям, все это повторится 100 раз

Ссылка на комментарий
  • 0
  • Модераторы
10 часов назад, Martifan сказал:

P.S. на iOS не тормозит только на Android

Test.rar

у меня на устройстве нет тормозов кстати

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

Как один из вариантов решения подобных проблем - как можно меньше создавать/размещать на "двигающихся" элементах различных компонент.

Чем меньше компонент - тем меньше "перерисовок". Отсюда - какие именно компоненты, тоже играет роль. Если это TLabel или TPanel, или другие несложные компоненты, то это "простые" элементы. Соответственно их перерисовка не сложна. Если это элементы посложнее, типа TListBox, в котором у всех его TListBoxItem определены свойства Text, Detail и, возможно, другие, типа вставлены еще и картинки и т.д., то это будет уже "весомый" элемент.

Что еще важно - какой стиль вы применили к тому или иному компоненту. Если у вас простой TPanel имеет сложный стиль, переопределенный вами, то и его "прорисовка", соответственно, будет дольше происходить.

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

Ну есть еще вариант... Он будет, относительно, "мудреней"... Все зависит от вашего желания)

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

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

Спасибо за ответы решенные нашлось, может кому пригодится

TAnimator.AnimateIntWait(Rectangle1, 'Position.Y', -300);
TAnimator.AnimateInt(Rectangle1, 'Position.Y', 144,1,TAnimationType.Out,TInterpolationType.Back);
Изменено пользователем Martifan
Ссылка на комментарий

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

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

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

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

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

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

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

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

×
×
  • Создать...