Thread.sleep () останавливает мою краску?
Я делаю программу, которая пытается анимировать карту, перемещающуюся по экрану, как если бы вы на самом деле вытащили ее со стола. Вот код для анимации:
public void move(int x, int y) {
int curX = this.x; //the entire class extends rectangle
int curY = this.y;
// animate the movement to place
for (int i = curX; i > x; i--) {
this.x = i;
}
this.x = x;
this.y = y;
}
этот прямоугольный объект находится внутри панели внутри jframe. для перекраски панели, у меня есть это:
public void run() {
while (Core.isRunning()) {
gamePanel.repaint(); //panel in which my rectangle object is in
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
это поток, перерисовывающий gamePanel каждые 50 миллисекунд.
Теперь я понимаю, что, возможно, это не лучший способ сделать подобные вещи. если есть лучший способ сделать все это перекрасить, пожалуйста, сообщите мне!
Но проблема у меня в том, когда я звонюmove()
Команда для моего прямоугольника проходит через поток, но изображение не обновляется до конца, так что это просто прыжок из точки А в конечное местоположение.
почему это происходит? Кто-нибудь может критиковать / улучшать мой код? Спасибо!