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

Частота отображения анимации


Garrincha

Вопрос

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

Требовалось в мой проект добавить немного анимации чтобы пользователи не скучали. По такому случаю решил использовать TFloatAnimation FireMonkey т.к. все говорили что это просто и очень красиво получается. Но возникла проблема с количеством кадров в секунду.

Приведу конкретный пример.

Нужно на OnMouseEnter чтобы кнопка увеличивалась по высоте в 2 раза (с 25 до 50). Так вот, если на свойство Height повесить TFloatAnimation то за 0,5 секунды картинка обновится

на компе Celeron 2,2GHz 2Гб ОЗУ всего 2-3 раза 

на компе Intel i3 2,53Ghz 4 Гб ОЗУ быстрее где-то раза в 3, но все равно не так плавно как хотелось бы.

Но если я по-старинке напишу такой код на OnMouseEnter

while but.Height < 50 do begin
    but.Height := but.Height + 1;
    Application.ProcessMessages;
    sleep(5);
  end;

И аналогичное на OnMouseLeave то даже на первом менее мощном компьютере все очень быстро и красиво отрабатывает. Просто супер как отрабатывает.

Это нормально для FireMonkey? Неужели все программируют под хорошие, относительно мощные компьютеры, а на старом железе нормальную анимацию на FireMonkey не написать?

Все видео что я видел в интернете про анимацию в FireMonkey отличное, анимация правда хорошая. Это меня удивляет.

Нигде не нашел информацию о том на какою дельту изменяется свойство объекта в TFloatAnimation и как определяется задержка между кадрами. Может при установке RAD?

Может кто-то сталкивался и такой проблемой и решил ее?

 

Заранее благодарен.

 

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

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

  • 0

А что при этом показано на экране? Некоторые эффекты в FM ОЧЕНЬ СИЛЬНО затормаживают отрисовку. И это не только с анимацией. К примеру, у меня таймер, показывающий сотые доли секунды плавно и четко, еле показывал десятые доли при наложении на него эффекта тени или свечения и т.п.

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

Простите, не совсем ясно выразился. Имеется в виду Label на весь экран, на котором отсчитываются минуты, секунды и сотые доли секунд. При наложении на лейбл эффекта начинались тормоза

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

Добрый день,

  1. Вы можете поменять частоту срабатывания анимации. TAnimation.AniFrameRate отвечает за указания своей частоты срабатывания анимации. По умолчанию она равна 60 кадров в секунду. Значащие значения в диапазоне [5, 100]. Значения больше или меньше этого диапазона приводятся к нему же.
  2. Эффекты дорогостоящие операции. Поэтому их использование должно быть сведено к необходимому минимуму, особенно в анимации. В FireMonkey для ускорения эффектов, эффекты кешируются в контроле, к которому применяются. Однако, кэш не работает для анимации эффектов.
Ссылка на комментарий
  • 0

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

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

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

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

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

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

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

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

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

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

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