java - (slick2D)在Keypress上以设定的速度移动精灵设置距离

时间:2012-12-07 01:03:09

标签: java distance

所以我一直在尝试使用语句

编写一个角色正在移动的简单游戏
character1.x+=0.1f*delta

其中delta是帧之间的时间(以毫秒为单位)。当我想每帧移动它时,这种方法很有效,但我希望能够以该速度将其移动一定距离(50像素,或我游戏中的单个图块)。使用for()循环使它以最大速度移动精灵,所以我不能这样做。它必须在单个按键上工作,因此它们不必按住键。

当然,我几乎没有用Java做过任何事情,所以我可能会错过一个非常简单的解决方案。现在,我可以将其改为瞬时运动,但看起来真的很生涩。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可能希望为组件添加keyListener。

    yourComponent.addKeyListener(new KeyAdapter () { // Possibly your Frame
             @Override // Overrides the keyPressed event
             public void keyPressed(KeyEvent e) {

                  if ( e == YOUR_KEY_CODE ) { 
                       for( int var = 0; var < yourDistance; var ++ ){
                          yourSpriteComponent.x += 1;
                          try{
                             Thread.sleep(yourTimeInMilliSec);
                          } catch( Exception e ){
                             // Your catch block here
                          }
                       }
                  }

            }
    });

其中YOUR_KEY_CODE是用户需要按下以执行for()循环的键。密码可以在javadoc

中找到