Javascript 我希望飞船/图像继续前进';a';或';d';按下按钮,它可以工作,但当从拐角以外的任何地方移动时,速度会大大提高

Javascript 我希望飞船/图像继续前进';a';或';d';按下按钮,它可以工作,但当从拐角以外的任何地方移动时,速度会大大提高,javascript,html,css,Javascript,Html,Css,如果船/图像处于中间位置,移动速度非常快,但从一个角到另一个角的速度是平稳的,这正是我想要的任何修正 图像id为ship 我想将飞船的vw增加1,以产生运动的错觉。 如果有人知道我正在尝试的更好的代码,请分享,这将对我有很大帮助 多谢各位 <html> <head> <title> Space Game Engine </title> <style> #ship{ p

如果船/图像处于中间位置,移动速度非常快,但从一个角到另一个角的速度是平稳的,这正是我想要的任何修正

图像id为ship

我想将飞船的vw增加1,以产生运动的错觉。 如果有人知道我正在尝试的更好的代码,请分享,这将对我有很大帮助

多谢各位

<html>
<head>
<title>
Space Game Engine    
</title>
    <style>
      
        #ship{
            position:absolute;
            top:40vw;
            left:45vw;
            width:8%;
        }
    </style>
</head>
<body>
<img src='solo.png' id='ship'>
<script>
    const ship=document.getElementById('ship');
    var position=45;
    keylogger={};
    clickingAvaibility=true;//so that request animation frame run once for one key press.
    window.addEventListener("keydown",function(e){

    keylogger[e.key]=true;// this means on pressing a key keylogger['a']=true
    if(clickingAvaibility==true){ 
    keyrunner();
    }
    clickingAvaibility=false;//resetted to false becomes true on keyup
});



window.addEventListener("keyup",function(e){
keylogger[e.key]=false;
clickingAvaibility=true;

});

function keyrunner(){
 var raf=requestAnimationFrame(keyrunner);
if(keylogger['d']==true){
        if(position<91 && keylogger['d']){
        ++position;
            
        ship.style.left=position+'vw';
        }
    else{
        cancelAnimationFrame(raf);
    }
        }

if(keylogger['a']==true){
        if(position>1 && keylogger['a']){
        --position;
            ship.style.left=position+'vw';
           }
    else{
        cancelAnimationFrame(raf);
    }
        
        }
}
            
</script>    
</body>
</html>

太空游戏引擎
#船{
位置:绝对位置;
top:40vw;
左:45vw;
宽度:8%;
}
const ship=document.getElementById('ship');
var位置=45;
键盘记录器={};
单击Availability=true//这样,请求动画帧只需按一次键即可运行一次。
window.addEventListener(“向下键”,函数(e){
键盘记录器[e.key]=true;//这意味着按下键盘记录器['a']=true
如果(单击可用性==true){
keyrunner();
}
ClickingAvailability=false;//重置为false在keyup时变为true
});
window.addEventListener(“键控”,函数(e){
键盘记录器[e.key]=错误;
单击Availability=true;
});
函数keyrunner(){
var raf=requestAnimationFrame(keyrunner);
如果(键盘记录器['d']==true){
如果(位置1&&键盘记录器['a']){
--位置;
ship.style.left=位置+vw;
}
否则{
取消动画帧(raf);
}
}
}

我可以想象,当添加到位置时,您使用的单位至少造成了部分问题。尝试使用px
px
代替。我可以想象,当添加到位置时,您使用的单位至少造成了部分问题。尝试使用px
px