#flutter #dart #animation #flutter-animation #frame-rate
Вопрос:
Я прочитал в документации по классу тикера, что:
«Класс тикера вызывает свой обратный вызов один раз за кадр анимации».
Я использую createTicker(TickerCallback onTick)
для реализации секундомер. Поэтому мне нужно, чтобы переменная прошедшего времени, переданная TickerCallback
в, была предельно точной (т. Е. Мне нужно, чтобы через 5 секунд значение прошедшего времени составляло ровно 5 секунд).
Теперь мой вопрос: что произойдет, если у меня очень плохо закодирован вялый пользовательский интерфейс, который пропускает много кадров из-за плохой оптимизации? Я могу вспомнить 2 случая:
- Время секундомера обновляется не со скоростью 60 кадров в секунду (из-за моей плохой кодировки), но как только оно обновляется, отображается правильное время
- Отображаемое время неверно
- Другое?
В чем же дело? И почему (самое главное)? Кроме того, учитывая вышесказанное, рекомендуется ли использовать тикер для секундомера? Спасибо
Комментарии:
1. проверьте это объяснение, почему : codewithandrea.com/articles/flutter-timer-vs-ticker
Ответ №1:
Чтобы ответить на ваши вопросы(вопросы):
1.Время секундомера обновляется не со скоростью 60 кадров в секунду (из-за моей плохой кодировки), но как только оно обновляется, отображается правильное время.
Если телефон работает со скоростью 120 кадров в секунду, означает ли это, что он будет перенаправлять время 🙂
Flutter стремится обеспечить производительность 60 кадров в секунду (кадров в секунду) или 120 кадров в секунду на устройствах с частотой обновления 120 Гц. Для 60 кадров в секунду кадры должны отображаться примерно каждые 16 мс. Jank возникает, когда пользовательский интерфейс не отображается плавно.
Таким образом, вы можете использовать тикер, и даже если анимация будет вялой, все равно она будет отображаться в нужное время. Как и в случае, допустим, у нас есть некоторые задержки на кадрах 500, они будут задержками анимации, а не прошедшим временем. Как и на 3 — й секунде, у нас задержка 1 секунда, после этого у нас будет 5, он обновит экран, но таймер будет продолжаться.
Кроме того, учитывая вышесказанное, рекомендуется ли использовать тикер для секундомера?
Это. В худшем случае у вас будут выпадающие кадры, прыгающие секунды, но таймер будет точным.