2015-09-22 2 views
0

Я сейчас играю с html5, css и javascript, он работает так, как должен и все, но когда я нажимаю кнопку на моем проводном контроллере xbox360, он запускает обратный вызов, который я установил почти 50 раз меньше, чем Второй!Как сделать геймпадные ключи более медленными?

Как мне сделать обратный вызов только один раз в секунду, используя API-интерфейс Gamepad в JavaScript?

Я попытался с помощью кулдаун, как так

var pressCool = false; 

if(buttonPressed(xbox.stick2)){ 
    if(!pressCool){ 
     var e = jQuery.Event("keydown"); 
     e.keyCode = keys.custom.stick2; 
     $(document).trigger(e); 
     pressCool = true; 
    } 
} 

setTimeout(function(){ 
    if(pressCool){ 
     pressCool = false; 
    } 
}, 1000); 

Но это все еще дает мне больше, чем один обжиг обратного вызова.

+0

Где находится код? – hindmost

+0

@hindmost Зачем вам нужен мой код? Я не прошу о помощи в моем коде и не спрашиваю код, а скорее о том, как я что-то сделаю. – Mackan90096

+0

Без кода ваш вопрос не в тему как слишком широкий – hindmost

ответ

0

Ваш setTimeout callback фактически ничего не делает. При каждом вызове он проверяет, установлен ли флаг pressCool, но он всегда равен false, поэтому это условие никогда не выполняется.

Код за пределами setTimeout работает только один раз. В то время как кажется, что он должен быть вызван на каждом игровом фрейме (итерация игрового цикла).

Вы должны поместить весь код, относящийся к итерации цикла игры, в одну функцию и поместить свой вызов в обратный вызов setTimeout.

Так что ваш код должен выглядеть следующим образом:

... 
function update() { 
    if(pressCool){ 
     pressCool = false; 
    } 
    if(buttonPressed(xbox.stick2)){ 
     if(!pressCool){ 
      var e = jQuery.Event("keydown"); 
      e.keyCode = keys.custom.stick2; 
      $(document).trigger(e); 
      pressCool = true; 
     } 
    } 
    ... 
} 

setTimeout(function(){ 
    update(); 
}, 1000); 

Также я рекомендую вам прочитать MDN article отношение к вашей проблеме.

+0

А теперь это работает. Благодарю. – Mackan90096

+0

@ Mackan90096 Вы также можете повысить этот ответ, если он решит вашу проблему – hindmost

Смежные вопросы