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