从按键检测沿对角线移动-Javascript

从按键检测沿对角线移动-Javascript,javascript,if-statement,Javascript,If Statement,我想用箭头键在一个框中移动,如下所示(简化): 以下是实际代码: var left=parseInt(document.getElementById(“swag”).style.left); var topSwag=parseInt(document.getElementById(“swag”).style.top); window.addEventListener(“向下键”,转向,假); 功能导向(a){ 如果(a.keyCode==“37”){ //左箭头键 左--; document.

我想用箭头键在一个框中移动,如下所示(简化):

以下是实际代码:

var left=parseInt(document.getElementById(“swag”).style.left);
var topSwag=parseInt(document.getElementById(“swag”).style.top);
window.addEventListener(“向下键”,转向,假);
功能导向(a){
如果(a.keyCode==“37”){
//左箭头键
左--;
document.getElementById(“swag”).style.left=left+px;
}
如果(a.keyCode==“38”){
//向上箭头键
托普瓦格--;
document.getElementById(“swag”).style.top=topSwag+“px”;
}
如果(a.keyCode==“39”){
//右箭头键
左++;
document.getElementById(“swag”).style.left=left+px;
}
}

一次只按一次键。不能为多个按键获取按键事件。即使您在时间上尽可能近地按两个键,一个键将在另一个键之前被检测到,您将得到两个单独的事件


要处理多个键,您需要查看
keydown
keydup
事件,并跟踪按下的键。然后按照给定的间隔,根据当前按下的键移动框。

显示的代码不应阻止多个几乎同时进行的操作。显示函数的其余部分。我敢肯定,单个键盘事件只会告诉您一个键。使用操纵杆而不是键盘!(这让我想起了在克隆人的家庭电脑上玩游戏)你有实际代码而不是伪代码给我们看吗?这可能有助于我们解决这个问题。有没有其他人想象过这个操作会试图使用JavaScript的强大功能来移动一个纸板箱,还是只有我?谢谢。如何实现
keydown
,而不是现在看来的
keypress
或类似的东西?@JakeTheSnake:您实际上使用了
keydown
,但您只是在那一刻移动了框。您还应该捕获
keyup
,并跟踪每个键的向上或向下状态。您可以使用
setInterval
以间隔运行代码,该间隔根据键的状态移动框。我不确定
keyup
在这方面对我有何帮助。这会让我一次只能检测一把钥匙吗?我能做一些不同的变量,每个变量都能检测出哪些键被按下吗?谢谢。@JakeTheSnake:是的,您要跟踪的每个关键点(或具有尽可能多的项目/属性的数组/对象)都有一个变量,并让
keydown
keydup
事件更改与关键点对应的变量。这可以让你随时检查按下了哪些键,而不仅仅是在发生的那一刻最后按下了哪个键。现在一切都解决了!非常感谢,有了更多的变量,一切都会变得更好!;)
if( Key Pressed = Left Arrow ) {
     move box to left
}
if( Key Pressed = Up Arrow ) {
     move box up
}
if( Key Pressed = Right Arrow ) {
     move box to right
}