我正在尝试在一个简单的弹跳球示例中实现键输入,但某些功能没有正确响应。例如,如果我尝试停止整个运动它可以工作但键盘精度并不总是相同。我想这可能是由于循环,我的意思是,因为我要求循环中的输入,计算机的答案是不一样的,这取决于我按下键的那一刻。此外,我正在尝试暂停循环设置一个条件来调用自身内部的循环,虽然这在我使用鼠标时工作,但是当我使用键盘时它不会。
你可以看到这里的代码,所涉及的键是'D'开始运动并停止运动,'s'和'a'加速和加速,箭头移动和空间暂停。暂停根本不起作用。它会暂停动画,但不会重新加载。
非常感谢。
答案 0 :(得分:0)
我快速使用你的codepen并通过完全删除logicLoop并检查animationFrame循环中的d键来实现它:
function graphicLoop(){
context.clearRect(0,0,canvas.width,canvas.height); // Clean the canvas
draw();
requestAnimationFrame(graphicLoop);
if(keys[68]){
update();
}
}
graphicLoop();