Точность синхронизации во Flash - PullRequest
0 голосов
/ 13 сентября 2010

Кто-нибудь знает, насколько точна синхронизация вспышки и ее способность определять частоту обновления монитора клиента? Я должен быть в состоянии рассчитать продолжительность времени с точностью до 10 миллисекунд времени отклика. Также, если он выключен, есть ли способ откалибровать отклик на основе частоты обновления и действия монитора, чтобы убедиться, что значение максимально приближено к точному? Любая информация будет полезной! Еще лучше были бы примеры существующих тестов.

Обновление

Я нашел этот пост, который полезен, но хотел посмотреть, есть ли у кого-нибудь еще что-нибудь, что можно добавить по этому вопросу.

AS3: Насколько точны метод getTimer () и класс Timer?

http://www.kaourantin.net/2006/05/frame-rates-in-flash-player.html

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

Нет способа обнаружить его, и Flash Player не использует vsync, поэтому вычисление времени обновления не принесет особой пользы.

Все зависит от того, для чего вы хотите его использовать.Если вы просто синхронизируете что-то на экране, используйте getTimer с точностью до 1 мс - вам совершенно не нужно знать частоту обновления монитора для этого.

Кроме того, класс Timer ненадежен для вызовов, поэтомулибо сверните свой собственный класс таймера, либо используйте getTimer для onEnterFrames (наиболее точный способ обновления экрана).

1 голос
/ 13 сентября 2010

Вы не получаете частоту обновления монитора от Flash, даже в AIR.Да, кадры могут рендериться в разное время (особенно при большой нагрузке).AFAIK, ваш лучший источник точного времени - getTimer ().Анимация, основанная на getTimer () в ENTER_FRAME, является плавной (при условии, что частота кадров достаточно высока), хотя частота кадров может варьироваться.

Редактировать: ваш код может выполняться между сменами кадров, поэтому установите высокую частоту кадров и сохраняйтенагрузка маленькая.Таким образом, вы получите больше шансов вовремя ответить.Я считаю, что точность getTimer () составляет до 1 мс, но это немного сложно проверить.Запустите программу на несколько часов, затем сравните getTimer () и фактическое пройденное время? ..

...