Java 使用光标键平滑移动对象
我正在玩Slick2D,当我试图用光标键移动一个简单的矩形时遇到了一个问题 就功能而言,代码是有效的。然而,如果你一直按住其中一个光标键,不时会有一个小土塞在运动中温家宝看着屏幕 有人能建议改进代码以使矩形平滑移动吗 以下是我使用的测试代码:Java 使用光标键平滑移动对象,java,slick2d,Java,Slick2d,我正在玩Slick2D,当我试图用光标键移动一个简单的矩形时遇到了一个问题 就功能而言,代码是有效的。然而,如果你一直按住其中一个光标键,不时会有一个小土塞在运动中温家宝看着屏幕 有人能建议改进代码以使矩形平滑移动吗 以下是我使用的测试代码: public class SlickGame extends BasicGame { // ==================================================================================
public class SlickGame extends BasicGame {
// ==================================================================================
// Fields
// ==================================================================================
private Rectangle mPlayer;
// ==================================================================================
// Constructor
// ==================================================================================
public SlickGame() {
super("SlickGame");
}
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public void init(GameContainer pGameContainer) throws SlickException {
// create the player centered on the screen
mPlayer = new Rectangle(pGameContainer.getWidth()/2 - 20, pGameContainer.getHeight()/2 - 20, 40, 40);
}
@Override
public void update(GameContainer pGameContainer, int pDelta) throws SlickException {
Input input = pGameContainer.getInput();
int speed = 200;
float distance = speed * ((float)pDelta/1000);
if (input.isKeyDown(Input.KEY_LEFT)) {
mPlayer.setX(mPlayer.getX() - distance);
}
if (input.isKeyDown(Input.KEY_RIGHT)) {
mPlayer.setX(mPlayer.getX() + distance);
}
if (input.isKeyDown(Input.KEY_UP)) {
mPlayer.setY(mPlayer.getY() - distance);
}
if (input.isKeyDown(Input.KEY_DOWN)) {
mPlayer.setY(mPlayer.getY() + distance);
}
}
@Override
public void render(GameContainer pGameContainer, Graphics pGraphics) throws SlickException {
pGraphics.fill(mPlayer);
}
// ==================================================================================
// Methods
// ==================================================================================
public static void main(String[] args) {
try {
// create the game's container app
AppGameContainer container = new AppGameContainer(new SlickGame());
// adjust the resolution and disable fullscreen
container.setDisplayMode(800, 600, false);
// specify desired FPS
container.setTargetFrameRate(60);
// start the game
container.start();
}
catch (SlickException e ) {
e.printStackTrace();
}
}
}
谢谢,淘气的黑客。添加
container.setVSync(true)
成功了。尝试了一点之后,我注意到删除行容器。setTargetFrameRate(60);使情况有所改善。这样做对吗?还有其他想法吗?嗯,我不明白,这是一个问题,运动本身滞后还是图像看起来失真。如果问题是后者,则移除container.setTargetFrameRate(60)代码>本身并不能解决这个问题,但与container.setVSync(true)一起解决代码>它可以工作。