Thread.sleep () deteniendo mi pintura?
Estoy haciendo un programa que intenta animar una tarjeta que se mueve por la pantalla como si realmente la hubieras sacado de un escritorio. Aquí está el código para la animación:
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;
}
Este objeto rectangular está dentro de un panel dentro de un jframe. para volver a pintar el panel, tengo esto:
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();
}
}
}
Este es un hilo que repinta el gamePanel cada 50 milisegundos.
Ahora, me doy cuenta de que esta puede no ser la mejor manera de hacer este tipo de cosas. Si hay una mejor manera de hacer todo este repintado, ¡infórmeme!
Pero, el problema que tengo es cuando llamo almove()
comando para mi rectángulo, pasa por el hilo, pero la imagen no se actualiza hasta el final, por lo que es solo un salto desde el punto a la ubicación final.
¿Por qué está pasando esto? ¿Alguien puede criticar / mejorar mi código? ¡Gracias!