Animacao em java

3 respostas
J

Como faço para movimentar um quadrado que criei pelo metodo comp2D.fillRect para cima e para baixo?

Criei esses metodos:

public void run(){

while(true){

walk(10,-10);

walk(x, getSize().height + 10);

pause(1000);

}

}
public void walk(int start, int end){

int showpic =0;

for(int i=start; i<end; i+=5){

x= i;

current=showpic;

repaint();

pause(150);

showpic++;

if(showpic >2)

showpic=0;

}

}

Mas o quadrado nao se move

3 Respostas

ViniGodoy

Dê uma olhada aqui:
http://fivedots.coe.psu.ac.th/~ad/jg/

No capítulo sobre “Animation Loop”.

Quando está lidando com desenho, a melhor maneira de fazer isso é sobrescrevendo o método paintComponent de um JPanel ou paint de um JFrame.

W

bom se tua tela ficar “piscando” ao repintar os componentes,oque provavelmente vai acontecer ja que esta pintando tao rapido na mesma tela que ta sendo exibida, recomendo procurar sobre Double Buffering, mas pra começar como ele disse acima ai, tu pode sobreescrever o metodo paintComponent, e fazer tua pintura la dentro,porque ai tu so ta fazendo a logica da troca de imagens e movimento, quando tu chama repaint() e a mesma coisa que ta chamando nada.

ViniGodoy

Só complementando. No Java você implementa double buffering e page flipping através da classe BufferStrategy. Esse “piscar” da tela é também chamado de flickering.

Eu postei sobre isso uma vez aqui no GUJ:
http://www.guj.com.br/posts/list/57956.java#304745

Criado 31 de dezembro de 2007
Ultima resposta 1 de jan. de 2008
Respostas 3
Participantes 3