Animações

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

[code]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);  

} [/code]

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

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.

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/

Olha pra voce “caminhar” ate uma posiçao voce pode usar Timer e setLocation. Exemplo:

[code]
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();
}

}[/code]

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 :slight_smile:

[quote=IsaRakel]Olha pra voce “caminhar” ate uma posiçao voce pode usar Timer e setLocation. Exemplo:

[code]
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();
}

}[/code]

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 :)[/quote]

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

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

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