有人可以向我解释为什么这段代码没有为bufferedImage
制作动画,以便它移动到新的目标位置。注意:x2是bufferedImage
if (answer.equalsIgnoreCase("move")){
target=x2-change;
do{
if (x2>target)
x2=x2-SPEED;
try{Thread.sleep(10);
}catch(Exception exc){}
frame.repaint();
}
while(x2!=target);
}
答案 0 :(得分:1)
请向我解释为什么这段代码没有动画bufferedImage
我猜测代码正在Event Dispatch Thread (EDT)
上执行。 Thread.sleep导致EDT
进入睡眠状态,这意味着GUI在动画完成之前无法重新绘制。
您在上一个问题中得到了一个有效的例子:使用Swing Timer的https://stackoverflow.com/a/34552109/131872。
为什么使用Thread.sleep而不是Swing Timer ???