Image com Graphics2D e imageicon

Olá,tentei fazer uma animação para meu jogo,logo notei que os métodos mais fáceis eram usando o método Graphics2D e o ImageIcon,para isso iria precisar converter meu .mp4 para gif,até aí tudo bem,mas o Graphics2D recorda todos os movimentos do gif,ele mostra cada frame que se mexeu,e quando fui tentar no ImageIcon o gif ficou uma coisa bem tosca,todo desfigurado.Oque faço agora?Existe um método mais fácil para fazer isso?

Não sei se é mais fácil, mas geralmente não se usa gifs para isso, mas sim spritesheets.

A ideia é basicamente a seguinte: você tem uma imagem com todas as poses do personagem (cada quadro da animação dele) e a animação é obtida alternando entre essas poses num determinado intervalo de tempo (em milissegundos). Ajuda se vocẽ entender o loop de animação: http://pontov.com.br/site/java/48-java2d/121-o-loop-de-animacao (há outros bons artigos nesse site, dê uma olhada).

Com java, você pode carregar uma imagem num bufferedimage e faz a exibição usando Java2D, sobrescrevendo o método paintComponent de um JFrame ou JPanel por exemplo. Não precisa usar imageicon nem outros componentes Swing. Veja aqui como desenhar parte de uma imagem: https://stackoverflow.com/questions/19601116/how-to-draw-part-of-a-large-bufferedimage e https://stackoverflow.com/questions/24063351/drawing-certain-parts-of-image-offset-from-the-corner

Abraço.

1 curtida

Muito obrigado TerraSkilll,você realmente me ajuda bastante com meu aprendizado