Thread.sleep () parando minha pintura?
Estou criando um programa que está tentando animar um cartão que se move pela tela como se você o tivesse tirado de uma mesa. Aqui está o código para a animação:
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;
}
esse objeto retangular está dentro de um painel dentro de um jframe. para repintar o painel, eu tenho o seguinte:
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 é um tópico, repintando o gamePanel a cada 50 milissegundos.
Agora, percebo que essa pode não ser a melhor maneira de fazer esse tipo de coisa. se houver uma maneira melhor de fazer toda essa repintura, por favor me informe!
Mas, o problema que estou tendo é quando ligo para omove()
comando para o meu retângulo, ele passa pelo thread, mas a imagem não é atualizada até o final, portanto, é apenas um salto do ponto a para o local final.
Por que isso está acontecendo? alguém pode criticar / melhorar meu código? obrigado!