PDA

Просмотр полной версии : Как работает getTimer()?


BezDelnik
16.01.2014, 13:59
Привет всем. Интересует как работает getTimer(), возвращает ли он всегда точный результат или может немного "запоздать" или "поспешить"? Может ли вернуть некорректное время в связи с лагами флешки или чего-нибудь еще? Возможно где то в просторах интернета есть описание работы этой функции - буду рад, если кто-то поделиться ссылкой.

Zebestov
16.01.2014, 14:09
Возможно где то в просторах интернета есть описание работы этой функции
Ты не поверишь! (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/utils/package.html#getTimer())

BezDelnik
16.01.2014, 14:11
Это понятно, я имел в виду не просто описание, а что-то более углубленное

Основной вопрос: может ли getTimer() возвращать некорректное значение?

FlashRus
16.01.2014, 14:15
Каким образом проявляется отставание/задержка?
Код в студию.

BezDelnik
16.01.2014, 15:20
Код не получится - большой проект. Суть такова: при первом запросе на сервер флешка получает серверное время, флешка его сохраняет (serverTime) и сохраняет момент времени, когда ми сохраняем серверное время
synchronizeTime = getTimer();
Понятно что на сервере и флешке уже будет рассинхрон (время запроса), но это допустимо. Допустимо что бы флешка немного отставала. После этого в любой момент времени мы узнаем серверное время без запроса на сервер:
currentServerTime = serverTime + getTimer() - synchronizeTime;
Суть проекта (игры): игрок расстраивает свою базу, воюет с другими игроками.
Игрок начинает что-нибудь строить - идет команда на сервак startBuilding с временем старта (currentServerTime), и запускается таймер на клиенте. Когда время вышло - шлем команду на сервак - buildingComplete. Но сервак отвечает, что рановато что-то. То есть время на флешке ушло вперед. Повторяется не 100% и не со старта, а когда игрок немного поиграет.
Ну вот как то так

FlashRus
16.01.2014, 15:37
Вам сюда (http://www.flasher.ru/forum/blog.php?b=368)

BezDelnik
16.01.2014, 16:13
Спасибо огромное, буду пробовать :)