Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 13.01.2012, 12:28   #1
Animan2010
AnyKey`щик
 
Регистрация: 03.01.2012
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Помогите с keydown() позязя

Как сделать так, чтобы keydown() срабатывал не чаще чем, скажем, раз в секунду? А то уж очень быстро он срабатывает. Просто keyhit не очень удобная функция, так как приходится постоянно использовать flushkeys и вставлять эту команду в тонны функций моей игры.
(Offline)
 
Ответить с цитированием
Старый 13.01.2012, 12:54   #2
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Помогите с keydown() позязя

...
Global timer=millisecs()
if keydown(1) and millisecs()-timer=1000 then
timer=millisecs()
...
endif
Как-то так
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Colossus (13.01.2012)
Старый 13.01.2012, 13:01   #3
Animan2010
AnyKey`щик
 
Регистрация: 03.01.2012
Сообщений: 11
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите с keydown() позязя

Спс =)
(Offline)
 
Ответить с цитированием
Старый 13.01.2012, 13:27   #4
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: Помогите с keydown() позязя

Ты не верно подошёл к задаче.
Делай так:
Создай переменную KeySpaceDown, далее в начале цикла:
 KeyEnterDown = KeyDown(28)
После этого никогда не используй KeyDown( 28 ) в коде, а только саму переменную.
Потом заведи перменную "последнего срабатывания". EnterTriggeredMS, она будет держать данные в о времени когда последний раз сработал триггер (ежесекундный например). Перед игровым цыклом, присвой ей значение Milliseconds().
Далее заведи переменную MS, и в начале цикла присвой ей Milliseconds(), далее в коде впредь юзай только переменную MS.
Потом заведи переменную TriggerEnter - она будет True если сработал триггер.
Затем:
If (KeyEnterDow And MS - EnterTriggeredMS > 1000)
  EnterTriggeredMS = EnterTriggeredMS + 1000
  TriggerEnter = True
Else
  TriggerEnter = False
EndIf
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
Colossus (13.01.2012), Dream (13.01.2012), LLI.T.A.L.K.E.R. (14.01.2012)
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 09:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com