Adicionar movimentaçao a uma figura 2d

3 respostas
Rafael_Marques1

Seguinte, eu criei um jframe simples, com um circulo dentro

até ai nada de anormal...

porém eu quero adicionar movimento a ele, tipo

qndo precisar o up_arrow, ele ir pra cima, etc...

como que eu posso fazer isso?

o código é esse:

package teste;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

/**
 *
 * @author Rafael Marques
 */
public class testeGraphics extends JPanel{
    
    public void paintComponent (Graphics g){
        
        super.paintComponent(g);

        g.setColor(Color.BLACK);
        
        g.fillArc(15, 35, 80, 80, 0, 360);       
           
    }
    
}
package teste;

import javax.swing.JFrame;

/**
 *
 * @author $ Rafael de Oliveira Marques
 *
 */
public class Main {
    

    
        
    public static void main(String[] args) {
        
       JFrame jf = new JFrame();
       jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
       testeGraphics teste = new testeGraphics();
       
       jf.add(teste);
       jf.setSize(300,220);
       jf.setVisible(true);
       
       
     
       
    }

}

3 Respostas

Mikhas

teste.setLocation(x,y)

ViniGodoy

Adicionar movimento é um tema muito mais complexo, especialmente porque envolve disparar uma thread e criar um loop de animação.
E loop tem a seguinte estrutura:

while (!acabou) { processarLogica(); //Movimentar atualizar as coordenadas do círculo desenhar(); //Desenha o círculo }

Você terá que desenhar o seu círculo várias vezes, como um filme faria.
Também tem que se preocupar a respeito da velocidade do círculo, para que ela se mantenha constante em diferentes máquinas.

Só setLocation não serve para esse caso. Dá uma lida nesses artigos:
An animation buffer: http://fivedots.coe.psu.ac.th/~ad/jg/
Space Invaders Tutorial: http://www.cokeandcode.com/node/6

Depois deles, você vai entender certinho como se faz animações.

Rafael_Marques1

vlw mesmo vini!
vou dar uma lida!!!

obrigado!! :wink:

Criado 2 de novembro de 2008
Ultima resposta 3 de nov. de 2008
Respostas 3
Participantes 3