Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Точный таймер (http://www.flasher.ru/forum/showthread.php?t=208644)

darkthor 09.08.2014 12:37

Точный таймер
 
Всем привет. У такая ситуация: у меня есть игра на время, там по таймеру уменьшаются секунды данные на игру. При этом есть кнопка "пауза". Когда нажимаешь на паузу - таймер останавливается. Нажимаешь второй раз - соответственно запускается дальше. И так получается, что при частом нажатии на паузу (< 1 секунды) таймер вообще перестает уменьшаться. То есть как бы время после паузы округляется до начала секунды.
Подскажите пожалуйста разумный вариант решения проблемы. Мне пока в голову приходит только увеличение частоты срабатывания таймера например до 50 миллисекунд и проверка прошла ли секунда с прошлого раза. Но этот вариант смахивает на костыль. Может быть есть еще способ?

caseyryan 09.08.2014 13:03

Цитата:

Но этот вариант смахивает на костыль. Может быть есть еще способ?
Это не костыль. Это нормальная практика, делайте проверку сколько милисекунд прошло

darkthor 09.08.2014 13:18

Хорошо, тогда вопрос в том сколько миллисекунд поставить в таймер? В документации написано что меньше 16 не рекомендуется. А что можете посоветовать вы?

caseyryan 09.08.2014 13:46

В одной секунде 1000 миллисекунд, то есть даже если поставить 20 или 50, то все равно этого будет достаточно. Читерить при такой скорости проверок подобным образом будет не реально. Только проверку делайте не через timer.currentCount, а через getTimer();

Код AS3:

var lastTime:int = getTimer();
 
function onTimer(e:TimerEvent):void {
    var curTime:int = getTimer();
    if (curTime - lastTime >= 1000) {
        lastTime = curTime;
        trace("секунда прошла");
    }
}

Погрешности конечно будут, но не значительные

darkthor 10.08.2014 16:51

Спасибо


Часовой пояс GMT +4, время: 11:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.