Animações

7 respostas
E

ola

já procurei varias maneiras de tentar fazer animações mas só o que consigo é exibir imagens na Frame

já perguntei aqui no fórum e disseram que com setLocation e AffineTransform é possivel mover uma imagem

sera que poderiam aplicar essas funções no meu codigo? ja tentei mas nada acontece..
estou utilizando netbeans 7.2

package jav;  
  
  
import javax.swing.ImageIcon;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
  
  
public class Jav extends JFrame {          
      
    public static void main(String[] args) {      
     JFrame frame = new JFrame("imagem");          
     JLabel label = new JLabel(new ImageIcon("C:/Dev-Pas/imgres.jpg"));     
     frame.add(label);  
     frame.setSize(800,600);  
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
     frame.setLocationRelativeTo(null);  
     frame.setVisible(true);  
                
          
}

7 Respostas

J

O que você quer fazer exatamente ? Este seu método apenas adiciona a imagem no Frame

M

Para se fazer a animação você precisaria de um conjunto de imagens e trabalhar com Graphics ou exibir um gif.

Deve ter alguma framework voltada pra jogos capaz de fazer oque você deseja também

O Se for utilizar o Graphics procure pelo metodo drawImage(…)

Pelo menos isto é até onde eu sei.

E

gostaria de colocar coordenadas da frame e exibir a imagem naquele lugar… e para mover eu poderia usar um sleep e colocar outra coordenada pra ela dando a impressão de movimento não?

e se possivel girar a imagem em um angulo para dar mais efeitos =)

*assim como:

rotacionar: http://www.imagensdahora.com.br/gifs_path/5211/bola_girando_08/

transladar:http://www.imagensdahora.com.br/gifs_path/5210/bola_girando_07/

I
Olha pra voce "caminhar" ate uma posiçao voce pode usar Timer e setLocation. Exemplo:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;

public class Exemplo extends JFrame{
	ImageIcon imagem;
	int i,j;
	JLabel jlabel;
	Timer t;
	public Exemplo() {
		setLayout(null);
		imagem =new ImageIcon("bola.PNG");
		jlabel=new JLabel(imagem);
		jlabel.setBounds(340,i, 70, 70);
		add(jlabel);
		t=new Timer(1,new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				repaint();
				
				
				i+=5;
				if(i<260){
					jlabel.setLocation(45, i-5);
					
					
				}
				
			}
		});
			
		t.start();
		
		
		setVisible(true);
		setSize(500,500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new Exemplo();
	}

	}

Agora pra parecer que se mexe mesmo você faz um gif animado. Não sei se era isso que você queria, mas espero ter ajudado :)

E
IsaRakel:
Olha pra voce "caminhar" ate uma posiçao voce pode usar Timer e setLocation. Exemplo:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;

public class Exemplo extends JFrame{
	ImageIcon imagem;
	int i,j;
	JLabel jlabel;
	Timer t;
	public Exemplo() {
		setLayout(null);
		imagem =new ImageIcon("bola.PNG");
		jlabel=new JLabel(imagem);
		jlabel.setBounds(340,i, 70, 70);
		add(jlabel);
		t=new Timer(1,new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				repaint();
				
				
				i+=5;
				if(i<260){
					jlabel.setLocation(45, i-5);
					
					
				}
				
			}
		});
			
		t.start();
		
		
		setVisible(true);
		setSize(500,500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void main(String[] args) {
		new Exemplo();
	}

	}

Agora pra parecer que se mexe mesmo você faz um gif animado. Não sei se era isso que você queria, mas espero ter ajudado :)

Eu tentei colocar seu código mas quando coloco pra executar a frame nem abre e fica varios erros escritos na caixinha de baixo do netbeans

I

eu usei o eclipse, mas vc importou tudo? Eu testei aqui e vai. A imagem vai ate uma determinada posiçao 260

E

Claro que vai dar erro. Você por acaso tem uma imagem bola.png no seu projeto? Além disso, a variável i não foi inicializada. o repaint tem que vir depois do setlocation. Além disso, o ideal é usar o invoke later da class Swing utilities. Enfim, recomendo que você leia esse tutorial e adapte ao seu caso:
http://pontov.com.br/site/java/48-java2d/124-desenho-direto-active-rendering

Criado 27 de agosto de 2012
Ultima resposta 29 de ago. de 2012
Respostas 7
Participantes 5