Para applets com AWT funciona que é uma beleza o método que você
especificou.
Só não sei se este exemplo que você mostra funciona. No Swing não sei se
funciona, mas tente sincronizar os métodos com o synchronized, as vezes
funciona.

Eduardo

----- Original Message -----
From: "Sergio - InfoSaúde RS" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, May 03, 2001 11:59 AM
Subject: [java-list] Animação em Java


Bom dia !!

Gostaria de saber se alguém de vcs já implementou algum tipo de
animação em java e se conseguiu resolver aquele problema da tremedeira da
tela, por causa dos sucessivos repaint de tela. Tentei implementar uma
técnica que ví em um livro mas não tive muito sucesso. Eles chamavam a
técnica de buferrização dupla, que consiste nada mais nada menos que criar
uma outra instância de Graphics e pintar todos os objetos nela e depois
simplesmente pintar ao contexto da tua aplicação aquela imagem criada em
background. A idéia me pareceu ótima, só que quando implementei não
funcionou, o programa compila normalmente só que na hora da execução ele dá
erro de null pointer assingment.  Alguém sabe o que pode ser ???  Tem a ver
com o exemplo ser implementado utilizando awt e extendendo applet, sendo que
eu estou usando swing e extendendo JFrame ???

Segue abaixo as partes relevantes do código da minha classe:

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;

class RaceThread extends JFrame implements ActionListener{

JButton Inicia,Suspende,Para;
JPanel Baixo, Placar;
Bixo lebre, lebre2, lebre3, tart, tart2, tart3;

private Bixo Lugares [];
private int Posi [];
Image offscreenImg;
Graphics offscreen;
private Image ImgBg =
Toolkit.getDefaultToolkit().getImage("pista.jpg");

public RaceThread(){

super("Race Thread");

offscreenImg = createImage(size().width, size().height);
offscreen = offscreenImg.getGraphics();    //  a máquina
virtual acusa o erro nessa linha

}


public void paint(Graphics g){
super.paint(g);
int pos = 100;
for(int i=0;i<15;i++){
offscreen.drawImage(ImgBg,pos,22,this);    // No
método paint, todos os desenhos são feitos naquela instância de Graphics
criada na contrutora
pos+=54;
}

lebre.paint(offscreen);
lebre2.paint(offscreen);
lebre3.paint(offscreen);

tart.paint(offscreen);
tart2.paint(offscreen);
tart3.paint(offscreen);

g.drawImage(offscreenImg,0,0,this);   // Depois que tudo foi
pintado aí sim chama-se o paint para exibir a tela criada


}

}

------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------




------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a