在尝试使Java中的游戏角色跳转时,我尝试使用Thread.sleep()使图像向上移动5个像素,然后等待例如100毫秒,然后再次上移5像素,依此类推。
取而代之的是,当图像需要向上移动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();
}
}
}
我希望这足以完成我的代码,如果我应该上传完整的代码,请询问。
在此先感谢您的时间。
最佳答案
setBounds
是否包括重绘/渲染步骤?如果不是,则在keyPressed
中进行阻塞可能会阻止重新绘制,直到所有睡眠都完成并且keyPressed
返回为止。