Javascript html5画布上的键输入不总是响应
我试图在一个简单的弹跳球示例中实现关键点输入,但有些功能没有正确响应。例如,如果我尝试停止整个移动,它会工作,但键盘的精度并不总是相同的。我猜这可能是由于循环,我的意思是,因为我在循环中要求输入,计算机的答案不一样,取决于我按下键的时刻。我还试图暂停循环,设置一个条件来调用循环本身,当我使用鼠标时,这是有效的,但当我使用键盘时,它不起作用 你可以在这里看到代码,涉及到的键是“D”来启动和停止移动,“s”和“a”来减速和加速,箭头来移动,空格来暂停。暂停根本不起作用。它暂停动画,但不重新加载动画Javascript html5画布上的键输入不总是响应,javascript,html,Javascript,Html,我试图在一个简单的弹跳球示例中实现关键点输入,但有些功能没有正确响应。例如,如果我尝试停止整个移动,它会工作,但键盘的精度并不总是相同的。我猜这可能是由于循环,我的意思是,因为我在循环中要求输入,计算机的答案不一样,取决于我按下键的时刻。我还试图暂停循环,设置一个条件来调用循环本身,当我使用鼠标时,这是有效的,但当我使用键盘时,它不起作用 你可以在这里看到代码,涉及到的键是“D”来启动和停止移动,“s”和“a”来减速和加速,箭头来移动,空格来暂停。暂停根本不起作用。它暂停动画,但不重新加载动画
非常感谢。我快速使用了您的代码笔,并通过完全删除logicLoop并检查animationFrame循环中的d键使其正常工作:
function graphicLoop(){
context.clearRect(0,0,canvas.width,canvas.height); // Clean the canvas
draw();
requestAnimationFrame(graphicLoop);
if(keys[68]){
update();
}
}
graphicLoop();
但这有点不同。我不希望球在按下键的同时移动,而是像我的代码那样停止它们或让它们移动一次(识别输入有困难)。另一个问题与空格键有关,因为它会冻结但不会解冻。我明白了。无论如何,我建议使用一个使用requestAnimationFrame的中心循环,并从那里调用logicLoop函数。还可以尝试在触发onkeydown的按键功能中处理单次按键,而不是检查循环中的按键是否已按下。