Как создать точный хронометр, соответствующий реальному времени? - PullRequest
1 голос
/ 23 сентября 2011

Я работаю в образовательном программном обеспечении, в основном разработанном с использованием Flash AS3, и у нас есть хронометр, который показывает разные значения для разных пользователей.Пример: два пользователя запускают хронометр одновременно, но в течение нескольких минут использования они имеют разные значения.

В текущей реализации используется класс Timer, в результате чего это происходит, очевидно из-за различной средней скорости каждого компьютера.

У меня уже есть идея, но я хотел бы получить некоторые теоретические предложения.Заранее спасибо.

1 Ответ

2 голосов
/ 23 сентября 2011

Класс Timer не очень точен. Из документов: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html

В зависимости от частоты кадров SWF-файла или среды выполнения (доступной памяти и других факторов), среда выполнения может отправлять события с небольшим интервалом смещения. Например, если SWF-файл настроен на воспроизведение со скоростью 10 кадров в секунду (fps), что составляет интервалы в 100 миллисекунд, а таймер настроен на запуск события со скоростью 80 миллисекунд, событие будет отправлено вблизи интервала 100 миллисекунд. , Сценарии, интенсивно использующие память, также могут компенсировать события.

Если вы ищете относительное время с момента запуска вашего приложения, используйте flash.utils.getTimer (). http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#getTimer%28%29

Если вы хотите сделать более сложную синхронизацию, вы можете использовать класс Date. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Date.html

...