Piszę prostą grę. Gdzie użytkownik wciśnie przycisk myszy, tam obiekt typu JLabel z ustawioną ikoną "poleci". Kod wygląda tak:
@Override
public void mousePressed(MouseEvent e) {
myX = ship.getX();
myY = ship.getY();
goToX = e.getPoint().x;
goToY = e.getPoint().y;
new Thread(() -> {
do {
if(myX < goToX-(ship.getWidth()/2)) {
++myX;
e.translatePoint(e.getComponent().getLocation().x-myX, e.getComponent().getLocation().y-myY);
ship.setLocation(myX, myY);
}
if(myX > goToX-(ship.getWidth()/2)) {
--myX;
e.translatePoint(e.getComponent().getLocation().x-myX, e.getComponent().getLocation().y-myY);
ship.setLocation(myX, myY);
}
if(myY > goToY-(ship.getHeight()/2)) {
--myY;
e.translatePoint(e.getComponent().getLocation().x-myX, e.getComponent().getLocation().y-myY);
ship.setLocation(myX, myY);
}
if(myY < goToY-(ship.getHeight()/2)) {
++myY;
e.translatePoint(e.getComponent().getLocation().x-myX, e.getComponent().getLocation().y-myY);
ship.setLocation(myX, myY);
}
try {
Thread.sleep(5);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}while(myX != goToX-(ship.getWidth()/2) || myY != goToY-(ship.getHeight()/2));
}).start();
}
Chodzi o to, że pozycja zmieniania jest co 5 milisekund. Przez to ikona na JLabel ciągle miga. Można ustawić jakieś płynne przemieszczanie tego obiektu?