Javascript 如何使gamepad键发射速度变慢?
我目前正在用html5、css和javascript制作一个游戏,它可以正常工作,但当我按下有线xbox360控制器上的一个按钮时,它会在不到一秒钟内触发我设置了近50次的回调 如何使用JavaScript中的Gamepad API使回调每秒只触发一次 我试过使用这样的冷却计时器Javascript 如何使gamepad键发射速度变慢?,javascript,google-chrome,controller,Javascript,Google Chrome,Controller,我目前正在用html5、css和javascript制作一个游戏,它可以正常工作,但当我按下有线xbox360控制器上的一个按钮时,它会在不到一秒钟内触发我设置了近50次的回调 如何使用JavaScript中的Gamepad API使回调每秒只触发一次 我试过使用这样的冷却计时器 var pressCool = false; if(buttonPressed(xbox.stick2)){ if(!pressCool){ var e = jQuery.Event("key
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);
但这仍然给了我不止一次的回调。您的
设置超时
回调实际上什么都不做。每次通话时,它只检查是否设置了pressCool
标志,但它始终等于false
,因此该条件永远不会为真
setTimeout
之外的代码只运行一次。然而,似乎必须在每个游戏帧上调用它(游戏循环迭代)
您必须将与游戏循环迭代相关的所有代码放在一个函数中,并将其调用放在setTimeout
callback中
因此,您的代码应该如下所示:
...
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);
另外,我建议您阅读与您的问题相关的文档。@hindsmost为什么需要我的代码?我不是在我的代码上寻求帮助,也不是在问代码,而是在问我将如何做某事。如果没有代码,你的问题是离题的,因为太宽泛了。当我问一件事时,我的问题怎么会太宽泛了?没有任何意义。你没有努力解决你的问题,现在希望有人帮你解决。这是结束您的问题的原因。然而,我还没有投票关闭它,也没有投票否决它。与此相反,我建议你拿出自己努力的证据。好吧,我会补充一些证据。@Mackan90096如果这个答案能解决你的问题,你也可以对它进行投票