|
Meu amigo teve um problema igualzinho ao seu, ele
resolveu isto ap�s dias de pesquisa, conversa com ele que ele chegou a fundo
neste problema e resolveu.
----- Original Message -----
Sent: Monday, November 26, 2001 3:47
PM
Subject: Re: [java-list] N�o consigo
parar o efeito piscante (Double_Buffer ing)
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
|