java-(slick2D)在按键上以设定速度移动精灵设定距离

java-(slick2D)在按键上以设定速度移动精灵设定距离,java,distance,Java,Distance,所以我一直在尝试写一个简单的游戏,其中一个角色正在使用语句移动 character1.x+=0.1f*delta 其中delta是帧之间的时间(以毫秒为单位)。当我想在每一帧移动它时,这很有效,但我希望能够以该速度移动它一个设定的距离(50像素,或者游戏中的一个瓷砖)。使用for()循环可以使精灵以最大速度移动,所以我不能这样做。它必须在单个按键上工作,所以他们不必按住键 当然,我几乎没有在Java中做过任何事情,所以可能有一个非常愚蠢的简单解决方案我没有。现在,我可以把它改成瞬时运动,但它看

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

character1.x+=0.1f*delta
其中delta是帧之间的时间(以毫秒为单位)。当我想在每一帧移动它时,这很有效,但我希望能够以该速度移动它一个设定的距离(50像素,或者游戏中的一个瓷砖)。使用for()循环可以使精灵以最大速度移动,所以我不能这样做。它必须在单个按键上工作,所以他们不必按住键


当然,我几乎没有在Java中做过任何事情,所以可能有一个非常愚蠢的简单解决方案我没有。现在,我可以把它改成瞬时运动,但它看起来真的很不稳定。有人能帮忙吗?

在这种情况下,您可能需要在组件中添加一个keyListener。

addKeyListener(新的KeyAdapter(){//可能是您的框架 @覆盖//覆盖按键事件 按下公共无效键(按键事件e){ 如果(e==你的密码){ for(int-var=0;var

其中,您的\u键\u代码是用户需要按下的键,以便执行for()循环。钥匙代码可在中找到

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 } } } } });