Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.08.2014, 12:37
darkthor вне форума Посмотреть профиль Отправить личное сообщение для darkthor Найти все сообщения от darkthor
  № 1  
Ответить с цитированием
darkthor
 
Аватар для darkthor

Регистрация: Jul 2012
Сообщений: 44
По умолчанию Точный таймер

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

Старый 09.08.2014, 13:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Но этот вариант смахивает на костыль. Может быть есть еще способ?
Это не костыль. Это нормальная практика, делайте проверку сколько милисекунд прошло
__________________
Ко мне можно и нужно обращаться на ты)

Старый 09.08.2014, 13:18
darkthor вне форума Посмотреть профиль Отправить личное сообщение для darkthor Найти все сообщения от darkthor
  № 3  
Ответить с цитированием
darkthor
 
Аватар для darkthor

Регистрация: Jul 2012
Сообщений: 44
Хорошо, тогда вопрос в том сколько миллисекунд поставить в таймер? В документации написано что меньше 16 не рекомендуется. А что можете посоветовать вы?

Старый 09.08.2014, 13:46
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
В одной секунде 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("секунда прошла");
    }
}
Погрешности конечно будут, но не значительные
__________________
Ко мне можно и нужно обращаться на ты)

Старый 10.08.2014, 16:51
darkthor вне форума Посмотреть профиль Отправить личное сообщение для darkthor Найти все сообщения от darkthor
  № 5  
Ответить с цитированием
darkthor
 
Аватар для darkthor

Регистрация: Jul 2012
Сообщений: 44
Спасибо

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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