Может кто-нибудь объяснить мне, почему этот код не анимирует bufferedImage, чтобы он перемещался в новую целевую позицию. примечание: x2 - это координата x 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);
}

Ответы (1)

пожалуйста, объясните мне, почему этот код не анимирует bufferedImage

Я предполагаю, что код выполняется в потоке отправки событий (EDT). Thread.sleep переводит EDT в спящий режим, что означает, что графический интерфейс не может перерисовываться, пока анимация не будет завершена.

В вашем последнем вопросе вам был приведен рабочий пример: https://stackoverflow.com/a/34552109/131872, который использует таймер Swing.

Почему вы используете Thread.sleep, а не Swing Timer ???

2022 WebDevInsider