Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/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 如何一次从addEventListener获取两个输入?_Javascript - Fatal编程技术网

Javascript 如何一次从addEventListener获取两个输入?

Javascript 如何一次从addEventListener获取两个输入?,javascript,Javascript,我有我的程序,你可以跳跃和移动,你甚至可以在空中移动,但是如果你在移动,然后你按下跳跃,你可以跳跃但不能移动。我怎样才能让你同时做这两件事?我已经尝试了几乎所有我能想到的,但没有任何效果 <script> var inAir = false; function addListener() { document.addEventListener("keydown", function(event) { if

我有我的程序,你可以跳跃和移动,你甚至可以在空中移动,但是如果你在移动,然后你按下跳跃,你可以跳跃但不能移动。我怎样才能让你同时做这两件事?我已经尝试了几乎所有我能想到的,但没有任何效果

<script>
      var inAir = false;
      function addListener() {
        document.addEventListener("keydown", function(event) {
          if (event.key === "a" || event.key === "d") {
            ad = event.key;
            moveX();
          }
        })
        document.addEventListener("keydown", function(event) {
          if (event.key === " " && !inAir) {
            moveUpA();
            setTimeout(() => {if (moveUpB) {
              moveDown();
            }}, 700)
        }})}
      addListener();
      var posX = 750;
      var posY = 500;
      var fallSpeed = 2;
      var ad = ""
      function moveUpA() {
        if (!inAir) {
          inAir = true;
          moveUpB();
        }
      }
      function moveUpB() {
        if (posY > 100) {
          posY -= 3;
          document.getElementById('player').style.marginTop = posY + "px"
          setTimeout(() => {moveUpB();}, 1);
        }
        else {
            return true;
            }
          }
      function moveDown() {
        if (posY < 500) {
          posY += fallSpeed;
          document.getElementById('player').style.marginTop = posY + "px"
          fallSpeed += 0.03;
          setTimeout(() => {moveDown();}, 1);
        }
        else {
          inAir = false;
          fallSpeed = 2;
          posY = 500;
          document.getElementById('player').style.marginTop = posY + "px"
          return;
        }
      }
        function moveX() {
          if (ad === "a" && posX > -8) {
            posX -= 5;
            document.getElementById('player').style.marginLeft = posX + "px"
          }
          else if (ad === "d" && posX < 1860) {
            posX += 5;
            document.getElementById('player').style.marginLeft = posX + "px"
          }
        }
      </script>

var-inAir=false;
函数addListener(){
文档.添加的事件列表器(“键控”,函数(事件){
如果(event.key==“a”| | event.key==“d”){
ad=event.key;
moveX();
}
})
文档.添加的事件列表器(“键控”,函数(事件){
如果(event.key==“”&&!inAir){
moveUpA();
setTimeout(()=>{if(moveUpB){
向下移动();
}}, 700)
}})}
addListener();
var-posX=750;
var-posY=500;
var-fallSpeed=2;
var ad=“”
函数moveUpA(){
如果(!inAir){
inAir=真;
moveUpB();
}
}
函数moveUpB(){
如果(posY>100){
posY-=3;
document.getElementById('player').style.marginTop=posY+“px”
setTimeout(()=>{moveUpB();},1);
}
否则{
返回true;
}
}
函数moveDown(){
if(posY<500){
posY+=下降速度;
document.getElementById('player').style.marginTop=posY+“px”
下降速度+=0.03;
setTimeout(()=>{moveDown();},1);
}
否则{
inAir=false;
下降速度=2;
posY=500;
document.getElementById('player').style.marginTop=posY+“px”
返回;
}
}
函数moveX(){
如果(ad==“a”&&posX>-8){
posX-=5;
document.getElementById('player').style.marginLeft=posX+“px”
}
else if(ad==“d”&&posX<1860){
posX+=5;
document.getElementById('player').style.marginLeft=posX+“px”
}
}