我正在用Javascript制作乒乓球游戏,屏幕上有一个弹跳的球,您不能让它碰到包装盒的下边框。 (弹跳球不是问题,我已经对此进行了编程)

这是一个代码,当您按下箭头键时,应该使球拍从左向右移动...但是,球拍的作用是在原始位置向左或向右移动很多像素。我的意思是,它不能流畅地移动,只是在左侧或右侧出现30或100像素的样子。

function gameLoop() {

    //**********DETECTS IF LEFT OR RIGHT KEYS ARE PRESSED************

    $(document).keydown(function(e) {
       if(e.keyCode == 37) { //LEFT
            userBoxPosX -= userBoxSpeedX;
       }
       if(e.keyCode == 39) { //RIGHT
            userBoxPosX += userBoxSpeedX;
       }
    });

    //THE USERBOX IS A DIV THAT WE WILL USE AS RAQUET
    userBox.css('left', userBoxPosX + "px");

    setTimeout(gameLoop, 50); //THIS FUNCTION CALLS ITSELF EVERY 50 milliseconds (20FPS)

}


关于如何使它流畅移动的任何想法?当您按下箭头键时?

让我知道您是否需要更多信息或需要我上传项目,以便可以看到它正在工作。

最佳答案

一个简单的解决方案如下所示:

    $(document).keydown(function(e) {
         if(e.keyCode == 37) { //LEFT
            userBoxPosX -= userBoxSpeedX;
            updatePosition();
          }
         if(e.keyCode == 39) { //RIGHT
             userBoxPosX += userBoxSpeedX;
             updatePosition();
          }
      });

function updatePosition() {
    userBox.css('left', userBoxPosX + "px");
};

09-12 00:32