1

所以我一直在尝试编写一个简单的游戏,其中一个角色正在使用语句移动

character1.x+=0.1f*delta

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

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

4

1 回答 1

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中找到关键代码

于 2012-12-07T05:48:20.393 回答