gpt4 book ai didi

java - 在java小程序中使对象移动平滑

转载 作者:行者123 更新时间:2023-12-01 15:15:36 24 4
gpt4 key购买 nike

嗨 friend 们,我正在尝试编写一个简单的程序,该程序将平滑地向右、向左、向上和向下移动一个小方 block 。

事实上,正方形确实会向四个方向移动,但在尝试更改正方形方向时会出现明显的延迟。我计划最终编写一个类似于“砖 block ”游戏的小游戏,但为了做到这一点,我的对象必须平滑移动。有人可以给我一些关于如何实现这一目标的建议吗?

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;

public class FutureGame extends Applet implements KeyListener{

int deltax;
int deltay;

public void init(){

deltax = 0;
deltay = 0;
this.addKeyListener(this);
}

@Override
public void keyPressed(KeyEvent ke) {

if(ke.getKeyCode() == ke.VK_RIGHT){
deltax = deltax +10;
}

if(ke.getKeyCode() == ke.VK_LEFT){
deltax = deltax - 10;
}

if(ke.getKeyCode() == ke.VK_UP){
deltay = deltay - 10;
}

if(ke.getKeyCode() == ke.VK_DOWN){
deltay = deltay +10;
}
this.repaint();
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub

}

public void paint(Graphics g){

g.drawRect(deltax, deltay, 10, 10);
}

}

最佳答案

如果您的线程(游戏的主要计算) sleep /等待时间非常短,您的按键监听器将无法在这么短的时间内捕捉到您的击键。延长这些线程的等待时间,然后重试。我指的是 try-catch block 中的东西。

您正在直接绘图。使用缓冲/双缓冲。

Changing the buffer is much more faster than changing the contents of screen.

关于java - 在java小程序中使对象移动平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11648911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com