Você deveria chamar o método repaint através de outro método, talvez assim 
(código pouco elaborado e sem revisão):

public class suaClasse extends Canvas implements Runnable
{
    public void run()
    {
>          try { // Espero meio segundo
>               Thread.sleep(500);
>          } catch (InterruptedException e) {
>               e.printStackTrace();
>          }
>          pos=pos+1; // Troco a substring dando a impressao
>          // de um texto que rola...
>          if(pos>fim-61)
>          {
>               pos=1;
>           }
>               repaint();
>           }
    }

    public void paint()
    {
     // seu código sem o trecho que agora está no run
    }
}

Espero que ajude.
[]'s
Emerson
At 13:56 26/11/2001, Fabio Oliveira wrote:
>Pessoal:
>
>Sou leigo em Java e estou precisando implementar uma pequena animação de 
>texto sobrepondo uma figura JPG sem aquele horrivel efeito piscante.
>Eu tentei criar o velho esquema de double_buffering, mas mesmo assim 
>continua piscando, não consigo entender.
>Toda vez que é chamado o método repaint a imagem do fundo entra lentamente 
>(é um JPG de 640x480) no meu micro (Celeron 450).
>O que eu estou fazendo de errado ?
>Agradeço a atenção de todos.
>Fábio.
>
>Método Paint
>
>     public void paint(Graphics g) {
>         if(privez==1) // Na primeira vez eu crio o contexto gráfico
>         {
>            privez=0;
>            // Cria buffer
>            buffer = createImage(640, 480);
>            // obtem e prepara contexto grafico associado
>            gContexto = buffer.getGraphics();
>            gContexto.setColor(Color.black);
>            gContexto.fillRect(0, 0, 640, 480);
>            gContexto.drawImage(logo,0,0,this); // Jpg 640x480
>         }
>
>         gContexto.setColor(Color.black);
>         gContexto.fillRect(0, 0, 640, 480);
>         gContexto.drawImage(logo,0,0,this);
>         String frase="";
>         frase=instru.substring(pos,pos+60);
>         gContexto.setFont(new Font("Serif",Font.BOLD,40));
>         gContexto.setColor(Color.blue);
>         gContexto.drawString(frase,10,440);
>         g.drawImage(buffer, getInsets().left, getInsets().top, this);
>          try { // Espero meio segundo
>               Thread.sleep(500);
>          } catch (InterruptedException e) {
>               e.printStackTrace();
>          }
>          pos=pos+1; // Troco a substring dando a impressao
>          // de um texto que rola...
>          if(pos>fim-61)
>          {
>               pos=1;
>           }
>               repaint();
>           }
>     }
>



------------------------------ 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