缓冲的图像动画代码没有正确重新绘制

时间:2016-01-01 22:11:18

标签: java swing animation graphics bufferedimage

有人可以向我解释为什么这段代码没有为bufferedImage制作动画,以便它移动到新的目标位置。注意:x2是bufferedImage

的x坐标
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);
}

1 个答案:

答案 0 :(得分:1)

  

请向我解释为什么这段代码没有动画bufferedImage

我猜测代码正在Event Dispatch Thread (EDT)上执行。 Thread.sleep导致EDT进入睡眠状态,这意味着GUI在动画完成之前无法重新绘制。

您在上一个问题中得到了一个有效的例子:使用Swing Timer的https://stackoverflow.com/a/34552109/131872

为什么使用Thread.sleep而不是Swing Timer ???