Como evitar "flicker" em imagens no JAVA
8 respostas
C
carninhuPJ
Ae pessoal, to tentando fazer um joguinho soh q tem uma coisa q ta me aguniando… tipo o jogo a usa uma imagem e a cada vez q vc mantem pressionado o botao do mouse ela sobe (y -= 5) e enquanto nao ta pressionado ela desce (y +=5). Estou usando o repaint() a partir de um timer com um valor 70 e mesmo assim ainda fica dando akelas piscadinhas toda hr(flicker, axo q eh isso q se xama)
no metodo paint eu uso g.drawImage(img_aviao,100,img_y,this);
alguem sabe como evitar essa piscadinha no java?
grato desde ja, espero q me compreendam hehe
abraços
Você não especifica se está usando AWT ou Swing. As classes de Swing usam double buffering, que evita o flicker.
F
FelipePJ
essa piscadinha ocorre pq qndo o metodo repaint() eh invocado a tela eh limpa pra depois redesenhar… se vc tiver usando awt, basta trocar public void pant(Graphics g) por public void update(Graphics g), e se vc tiver usando swing basta NAO chamar super.paint(g)… dai como n vai limpar a tela antes de redesenhar, se n tiver nenhum plano de fundo, vai ficar “marcado” os locais onde o aviao passou, pra resolver isso eh soh vc gravar as coords do quadro anterior e limpar somente esta area…
espero ter ajudado
Gente esse eh o codigo q eu to usando mas fica extremamente lento e tal pro aviao subir ou descer... alguem tem uma ideia doq possa melhorar?
a parte comentada se eu tirar os comentarios fica rapido mas fica o rastro da imagem...
Agradeço a ajuda
C
carninhuPJ
ah, eskeci de mencionar, o repaint() ta sendo xamado de dentro de um timer de valor 100.
grato
C
carninhuPJ
aeeeeeeeeee galera consegui \o/\o/\o/!!!
Depois de uns testes ta tuuuuudo bem!
mais tarde eu volto pra + perguntas infames hehe!
=*******************************
F
FelipeSS_2PJ
Poderia compartilhar com o proxímo a solução do seu problema???
Valeu!!
C
carninhuPJ
Vixe desculpa ae felipe!!!!! na empolgação eu eskeci foi mal hehe!
Antes tava ficando lento porque ele criava o offscreen pra tela toda. Dai eu redimensionei pra ficar do tamanho da imagem +- dai ele soh limpa a parte q a imagem vai ficar
public void paint(Graphics g){
if (offscr == null){
offscreenimage = createImage(57,60);
offscr = offscreenimage.getGraphics();
}
offscr.drawImage(img_aviao, 0,15, null);
g.drawImage(offscreenimage,100,img_y,this);
}
bem, nao sou muito bom com explicações mas se alguem nao entender alguma parte eu tento explicar. Soh essa parte mudou as outras tao =
Abraços
EDITADO:COLOQUE O CÒDIGO ENTRE AS TAGS [code]
F
FelipeSS_2PJ
Bem lesgal cara, quando tiver pronto poderemos jogar seu jogo??? Adoro jogos, as os unicos que fiz até hoje foram no flash, usa-se muito ActionScript, no Java nunca parei para fazer, deve ficar bacana…Valeu!!