Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅在按下键时更改值?_Javascript_For Loop_While Loop_Keypress - Fatal编程技术网

Javascript 如何仅在按下键时更改值?

Javascript 如何仅在按下键时更改值?,javascript,for-loop,while-loop,keypress,Javascript,For Loop,While Loop,Keypress,我试着做一个代码,当我按下箭头键时球只移动,当我放开时球停止,但它继续移动。我怎样才能解决这个问题 这是我编写的代码的一部分: document.onkeydown = function tast (e) { if (e.keyCode == 39) { // høyre høyre = 1; } else { høyre = 0; console.log("ikke høyre") } if (e.keyCo

我试着做一个代码,当我按下箭头键时球只移动,当我放开时球停止,但它继续移动。我怎样才能解决这个问题

这是我编写的代码的一部分:

document.onkeydown = function tast (e) {
    if (e.keyCode == 39) {  // høyre
        høyre = 1;  
    } else {
        høyre = 0;
        console.log("ikke høyre")
    }
    if (e.keyCode == 37) {  // venstre
        venstre = 1;  
    } else {
        venstre = 0;
    }
    if (e.keyCode == 38) {  // opp 
        opp = 1; 
    } else {
        opp = 0;
    }
    if (e.keyCode == 40) {  // ned
        ned = 1;              
    } else {
        ned = 0;
    }
}

if (venstre == 1){
    kuler[0].x -= 4;
}
if (høyre == 1){
    kuler[0].x += 4;;
}
if (opp == 1){
    kuler[0].y -= 4;
}
if (ned == 1){
    kuler[0].y += 4;
}

然后在
else
上将值设置为
0
。使用
onkeyup
事件处理程序。然后按键将值设置为
1
。和
onkeyup
将它们设置为
0

document.onkeydown = function tast (e) {
    if (e.keyCode == 39) høyre = 1;  
    if (e.keyCode == 37) venstre = 1;  
    if (e.keyCode == 38) opp = 1; 
    if (e.keyCode == 40) ned = 1;              
}

document.onkeyup = function tast2 (e) {
    if (e.keyCode == 39) høyre = 0;  
    if (e.keyCode == 37) venstre = 0;  
    if (e.keyCode == 38) opp = 0; 
    if (e.keyCode == 40) ned = 0;              
}

你好像忘了考虑一下onkeyup。我只想让它在按键按下时移动。设置它在按键按下时移动。当钥匙打开时,让它停止移动。。。。我认为下面的答案给出了一个很好的例子。Keyup可能只需将所有变量设置为0。@Barmar一次可以按多个键。例如,我可以按住左键和上键,当我向上释放并按住左键时,我不应该停止,而是向左走。这就是为什么不想将它们全部设置为0。