At 14:56 26/11/01 -0200, you 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();
          }
    }
 


vc nao deve fazer essa chamada do repaint() dentro do paint... alem disso, a chamada repaint() (pelo menos comigo) causa esse flickering mesmo... crie um thread para a anima��o e faca desse jeito:

Metodo 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();
         }
   } // fim do paint()


* Crie esta classe dentro de sua classe

private class updateThread extends Thread {
  public void run(){
      pos=pos+1; // Troco a substring dando a impressao
       // de um texto que rola...
        if(pos>fim-61)
        {            
            pos=1;
         }
             update(); // chamar repaint() causa flickering
              this.sleep(100);
          }
   } // faltam os try_catch, mas... dah pra imaginar como fica :)





Com isso, axo q resolve ":)

[]'s
-------------------------------------------------
----------- Herval Freire de A. J�nior ----------
----------- mailto:[EMAIL PROTECTED] ------------
--------- http://www.herval.hpg.com.br ----------
----------------- UIN: 2067270 ------------------
-------------------------------------------------
--[The adepts are everywhere... awake! v0.666a]--
-------------------------------------------------

http://member.isavvix.com/herval/vote.jsp?enquete=1003

Responder a