| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 17:36:39
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Primeiramente, Olá à todos.
Estou com uma duvida relacionada com o paintComponent. Estou fazendo um simples jogo em que o personagem (uma imagem) se move usando as setas. Mas porém, quando ele se move ele deixa um rastro de sua imagem. Só que não posso simplesmente pintar o fundo, pois o fundo é uma imagem também. Minha dúvida é o seguinte:
Existe algum métodos removeImage(Image i)?
Se não existe algo parecido, como fazer?
Atenciosamente, Gustavo.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 18:46:03
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Pinte o fundo.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 18:52:40
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Este é o problema, o fundo é uma imagem. Eu crio a imagem denovo?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 19:35:50
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Qual é o problema do fundo ser uma imagem?
Guarde-a numa variável e simplesmente pinte-a novamente.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 19:48:14
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Não irá tornar o jogo mais lento?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2010 20:30:42
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Um pouco sim, mas ainda será fácil manter uma taxa de FPS aceitável.
Na verdade, é a forma normal de se fazer.
O que você não deve fazer é carregar a imagem dentro do paintComponent, carregue-a só uma vez, na construção do seu jogo.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 13:05:56
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Godoy, como carrego o plano de fundo sem ser no paintComponent? Poderia me dar um exemplo?
E se o plano de fundo só for colocado uma vez, irá o ocorrer o erro do post inicial, irá criar várias imagens do boneco andando (usando paintComponent).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 13:33:13
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Posta teu código aí.
Só estou falando que a carga da imagem em si não pode ser no paintComponent. Faça no construtor da sua classe. A pintura, lógico, fica no paintComponent.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 13:37:13
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Atenciosamente, Gustavo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 13:55:43
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
Faça assim:
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:09:23
|
augustogava
What is classpath?
Membro desde: 16/03/2010 08:31:46
Mensagens: 7
Offline
|
Olá galera,
desculpa invadir o post, mas vi que foi algo igualsinho comigo rss,
Vi o site do Godoy de jogos e comecei a criar um joguinho de nave seguindo o exemplo seu.... e quando coloquei a imagem de fundo, ferro rss fica o rastro da Nave em cima da Imagem de fundo.
E já tentei colocar a img de fundo pra ser carregada igual vc disse abaixo, mas ai os fps do jogo fica muitoooooooooo lento. A imagem de fundo que estou usando é grande 800x1600, acho que solução vai ser substituir essa imagem mesmo, e criar o fundo de outra maneira.... ou tem alguma saida com a imagem grande?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:14:53
|
GustavoBorba
JavaChild
Membro desde: 23/11/2009 19:23:23
Mensagens: 110
Offline
|
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:5
at java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:397)
at java.awt.image.Raster.createWritableRaster(Raster.java:93
at javax.imageio.ImageTypeSpecifier.createBufferedImage(ImageTypeSpecifier.java:1056)
at javax.imageio.ImageReader.getDestination(ImageReader.java:2879)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:925)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1374)
at prj.<init>(prj.java:15)
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
at prj.initComponents(prj.java:25)
at prj.<init>(prj.java:1
at drawPanel.<init>(prj.java:40)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:17:25
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
augustogava wrote:Olá galera, desculpa invadir o post, mas vi que foi algo igualsinho comigo rss, Vi o site do Godoy de jogos e comecei a criar um joguinho de nave seguindo o exemplo seu.... e quando coloquei a imagem de fundo, ferro rss fica o rastro da Nave em cima da Imagem de fundo. E já tentei colocar a img de fundo pra ser carregada igual vc disse abaixo, mas ai os fps do jogo fica muitoooooooooo lento. A imagem de fundo que estou usando é grande 800x1600, acho que solução vai ser substituir essa imagem mesmo, e criar o fundo de outra maneira.... ou tem alguma saida com a imagem grande?
1. O seu jogo roda nessa resolução toda? 2. O que você está chamando de FPS muito lento? É uma péssima prática usar o paintComponent. O ideal, no caso de jogos, é mesmo usar a técnica de escrita direta, que está descrita no meu portal: Desenho direto - Active Rendering Jamais carregue imagens ou qualquer outro tipo de recurso no paint, é um suicídio.
This message was edited 1 time. Last update was at 16/03/2010 14:18:29
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:19:29
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline
|
GustavoBorba wrote:java.lang.OutOfMemoryError: Java heap space
Esse erro já diz tudo. Faltou memória para carregar a imagem. De que tamanho as imagens são?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/03/2010 14:20:33
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
Só complementando: não é correto chamar o repaint() quando uma tecla é pressionada. É mais correto criar uma Thread que chama repaint() periodicamente. E é mais correto ainda fazer um active rendering.
Sugiro que veja os artigos no site do ViniGodoy (veja a assinatura dele) para entender a melhor forma de criar jogos.
E, fora da questão, por convenção as classes, interfaces e enums em Java seguem o padrão upper camel case.
|
Marco Biscaro.
Seja livre!
Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|