Witam,
Tworzę małą grę w Javie, wykorzysując Swinga.
Natrafiłem na problem, dotyczący płynności animacji. Gdy uruchamiam poniżej podany kod, zuzycie CPU wzrasta do 100%, a na oko z 5-10 FPS-ów widać na ekranie.
Do wyświetlania animacji na JPanelu wykorzystałem przeciążoną metodę paint():
@Override
public void paint(Graphics g) {
grafiki.animacja++;
if (grafiki.animacja == 25) {
grafiki.animacja = 0;
}
g.drawImage(grafiki.tlo, 0, 0, this);
g.drawImage(grafiki.img[grafiki.animacja], 0, 0, this);
}
W grafiki.img[] mam 25 klatek animacji, ktora jest zapętlona.
Odświeżanie grafiki wykonuję w oddzielnym wątku, wykonując metodę repaint()
class watek extends Thread {
@Override
public void run() {
while (true) {
mainPanel.repaint();
try {
Thread.sleep(5);
} catch (Exception e) {}
}
}
}
Pytanie do Was: jak powinno się wyświetlać animacje, aby nie obciążały tak komputera? Co robię źle?
Pozdrawiam