Mover imagem em JFrame - como?

4 respostas
A

Boa tarde pessoal,
Estou começando a me aventurar no mundo do desenvolvimento do jogos com java SE (na verdade é um trabalho da faculdade).
Venho aqui pedir ajuda, pois sei que tem um pessoal que tem bons conhecimentos nessa área aqui no fórum.
Basicamente, o que eu precisaria é incluir uma imagem png (com fundo transparente) em um frame e movimentar ela pela tela (apenas na vertical e horizontal).
Por exemplo:
Mover a imagem 5 pixels para a esquerda
Ou
Mover a imagem para 201x795

Pensei em fazer isso da seguinte forma:
Incluir a imagem em um JFrame e movimentar o mesmo pela tela.
O problema é que acredito que isso vai ficar muito ?feio? aos olhos do usuário, pois a imagem tem que ir ?percorrendo? a tela até chegar a seu destino, ela não pode simplesmente sair do local atual e aparecer no destino, deve percorrer o caminho em uma velocidade constante. Ao movimentar o JFrame pixel por pixel, podem ocorrer alguns travamentos.
Minha dúvida é essa.

Acredito que exista alguma forma mais fácil e eficiente (a nível per performance) de movimentar esse JFrame na tela (pode não ser um JFrame também, se existir uma forma melhor de incluir a imagem na tela, melhor).

Só lembrando pessoal, não é nada profissional, apenas movimentando a imagem pela tela (sem trancar muito) já tá ótimo.

Alguém saberia como posso fazer isso?

4 Respostas

InicianteJavaHenriqu

Se você movimentar uma JLabel (com a imagem do personagem inserido é mais fácil, porém, ficará feio e com travamentos).

O ideal seria você pintar suas imagens com um BufferedImage e veja este artigo do Ponto V

:thumbup:

A

Henrique,

Conforme você falou, andei dando uma olhada na classe BufferedImage. Peguei alguns exemplos de como imprimir a imagem, só preciso de um tempo para testar.

Agora uma dúvida básica (ao menos eu acredito ser), mas essencial:
Para mover a imagem pela tela, eu devo:
imprimir a imagem na tela e ir movendo o JComponent para a posição atual + 1
ou
apagar a imagem da posição atual e imprimir uma nova imagem na posição atual + 1
?
Na minha cabeça, a primeira opção seria a mais correta, mas como eu estou trabalhando com swing, todos os elementos são “pintados” na tela, então não tenho certeza sobre a melhor opção.

vlw :thumbup:

A

duplicado

InicianteJavaHenriqu

Este é a opção correta, pois, se você movimentar um JComponent ocorrerá travamentos na tela.

:thumbup:

Criado 31 de maio de 2012
Ultima resposta 1 de jun. de 2012
Respostas 4
Participantes 2