forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Помогите с keydown() позязя (http://forum.boolean.name/showthread.php?t=16188)

Animan2010 13.01.2012 16:28

Помогите с keydown() позязя
 
Как сделать так, чтобы keydown() срабатывал не чаще чем, скажем, раз в секунду? А то уж очень быстро он срабатывает. Просто keyhit не очень удобная функция, так как приходится постоянно использовать flushkeys и вставлять эту команду в тонны функций моей игры.

Nikich 13.01.2012 16:54

Ответ: Помогите с keydown() позязя
 
Код:

...
Global timer=millisecs()
if keydown(1) and millisecs()-timer=1000 then
timer=millisecs()
...
endif

Как-то так:)

Animan2010 13.01.2012 17:01

Ответ: Помогите с keydown() позязя
 
Спс =)

moka 13.01.2012 17:27

Ответ: Помогите с 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



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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot