Boa tarde a todos.
Estou fazendo um jogo e preciso fazer uma gambiarra que me permita utilizar dois métodos .repaint() abstrato de Graphics na mesma classe.
Tenho uma classe GamePanel que extends JPanel no construtor dela fiz o seguinte:
this.gs = new paintGraphics();
this.add(gs);
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
actionPerformed(null); // a raquete desenhada com velocidade 5
try {
Thread.sleep(5);
} catch (InterruptedException e) {
e.getMessage();
}
if (TECLA FOR PRESSIONADA){
this.gs.repaint(); // a bola é redesenhada e fica com outra velocidade
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.getMessage();
}
}
}
}
}).start();
O gs que aparece um pouco antes de eu iniciar a thread é a instancia da classe: private class paintGraphics extends JPanel {
@Override
public void paintComponent(Graphics g) {
ball.sprite(g); // desenha a bola na tela
g.dispose();
}
@Override
public void repaint() {
super.repaint();
}
}
Voltando a classe GamePanel tenho os métodos:[code] public void actionPerformed(ActionEvent e) {
repaint();
}
@Override
public void paintComponent(Graphics g) {
paddle.paintSprite(g); // desenha a raquete na tela
g.dispose();
}[/code]
E o objetivo é desenhar dois elementos com velocidades diferentes por isso preciso separar os métodos.