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”
}
}