Estou fazendo um applet com animações.
O problema é que, quando abro no browser, de tanto dar repaint(), a imagem fica piscando.
Tem algum jeito de otimizar o desenho na tela para que isso não ocorra, tipo um buffer duplo ou coisa parecida?
assim…se ta piscando é pq tem mais repaint do que o necessario.
posta o código… de repente agente consegue te ajudar beleza?
O problema está quando arrasto um objeto com o mouse. Daí eu mando redesenhar em cada instante.
O código responsável por isso está aí:
public void mouseDragged( MouseEvent e )
{
int x = e.getX();
int y = e.getY();
if( N > -1 ) // se esta clicado em cima de algum objeto
{
objeto.move(x-Dx,y-Dy);
repaint();
}
}
E sem o repaint()… fica o rastro do Objeto???
Se sim avisa ae
Se eu tirar o repaint() a tela não é redesenhada quando arrasto o objeto, só quando solto o botão do mouse, mas nesse caso é porque está chamando o repaint do mouseReleased().
Pois é…
na boa… fiz isso em Desktop e não tive problemas
Não sei te ajudar nessa questão
fico te devendo ok ?
Abraços
No lugar do repaint(), tenta colocar um validate() ou updateUI(). Talvez resolva.
Não chame o super.paint(g) dentro do método paint e tente usar BufferedImage. Ex.:
...
private Graphics2D g2d;
private BufferedImage buffer;
...
@Override
public void paint(Graphics g) {
g2d = buffer.createGraphics();
scene.drawElements(g2d);
g.drawImage(buffer, 0, 0, GlobalEngine.imageObserver);
g2d.dispose();
}
...