虽然试图在java中制作游戏角色跳跃,但我尝试使用Thread.sleep()使图像向上移动5个像素,然后等待100毫秒,然后再向上移动5个像素等。Thread.sleep()不工作
相反,当图像需要做5个像素,每个5个像素,每次等待100毫秒,它等待500毫秒,并向上移动25个像素。
我无法解释这种行为,似乎没有在线答案。请注意,我的程序不包含线程。这里是我的代码:
ImageIcon poppetje1 = new ImageIcon("img/poppetje1.jpg");
JLabel poppetje2 = new JLabel(poppetje1);
...
public void jump() {
try {
poppetje2.setBounds(poppetje2.getX(), (poppetje2.getY()-5), poppetje1.getIconWidth(), poppetje1.getIconHeight());
Thread.sleep(100);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
...
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W) {
for(int c = 0; c < 10; c++) {
jump();
repaint();
}
}
}
我希望这是足够的我的代码,如果我应该上传完整的代码,请问。
提前感谢您的时间。
如果你正在进行这种编程,我建议寻找“游戏循环”。在这种模式下,你不应该像那样睡觉。 – 2015-02-05 13:12:44
您在事件调度程序线程中休眠,这不太好,因为它会让您的用户界面无法响应,并且可能不会执行您想要的操作。您可以使用某种计时器(例如,java.swing.Timer)。正如David Ehrmann所建议的那样,您可以更好地研究游戏循环,或者使用像libgdx或Slick2D这样的游戏的Java框架。 – 2015-02-05 13:16:27
谢谢大家,我使用java.swing.Timer解决了这个问题,程序现在运行平稳:) – kevinvdk 2015-02-05 13:47:41