| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2007 22:04:59
|
WillyKocher
JavaTeenager
Membro desde: 12/03/2007 14:47:07
Mensagens: 188
Offline
|
Bom, nem sei se isso e 'java básico' ou não , mas so por eu ter a duvida resolvi postar aqui mesmo...
e o seguinte gosto bastante de programar em java porem não trabalho com isto , então pra praticar bem a linguagem resolvi brincar de fazer joguinhos, que eu acho que da pra treinar bem porque engloba muita coisa , esta semana resvoli tentar fazer minha propria engine, e comecei pelas classes de recuperação de imagem e desenho .
estava tudo indo certo até que aconteceu algo que nao previ...
so e desenhado na tela a ultima instancia da classe Fighter , quando eu
esperava que todas fossem desenhadas ( ja que são instancias da mesma clase ) , pensei por um momento
que uma estava desenhando em cima da outro mas não e isso ,
derrepente alguem pode ter uma expliacação simples, as duas
instancias chegam a ser criadas e rodam em background, mas so uma
e desenhada =(
classe fighter
classe sprite
tem muita coisa no codigo que ainda nao configurei nem se atentem a isso, como comportamento das janelas e tal...
desculpem pelo flood de codigos ..vlw
|
SCJP 6.0 - 91%
SCWCD 5.0 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2007 22:24:05
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
Para começar mude janela.add() para janela.getContentPane().add()
Não se faz add() diretamente num JFrame.
Depois , tlv possa pensar em não fazer os seus Sprites serem JPanel.
Eles não precisam ser JPanel para se puderem desenhar na tela. (E do ponto de vista OO um sprite não e um painel)
Tente criar um só JPanel que é "area de ação" onde os sprites se movimentam, mas não os faça filhos desse JPanel. Ou seja, quando o JPanel.drawGrpahics() for invocado pelo Swing simplesmente delege para os sprites.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2007 22:43:37
|
WillyKocher
JavaTeenager
Membro desde: 12/03/2007 14:47:07
Mensagens: 188
Offline
|
beleza acho que peguei a idéia vo implementar aqui pra ver se da certo.
Obrigado.
|
SCJP 6.0 - 91%
SCWCD 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/07/2007 02:34:38
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
sergiotaborda wrote:Para começar mude janela.add() para janela.getContentPane().add()
Não se faz add() diretamente num JFrame.
???
A partir do Java 1.5 pode-se usar o add diretamente sim.
Quanto a desenhar suas sprites, etc, desenha tudo em um buffer, e depois que tudo estiver desenhado vc manda pintar o buffer no seu componente.
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/07/2007 02:58:30
|
WillyKocher
JavaTeenager
Membro desde: 12/03/2007 14:47:07
Mensagens: 188
Offline
|
davidbuzatto wrote:
sergiotaborda wrote:Para começar mude janela.add() para janela.getContentPane().add()
Não se faz add() diretamente num JFrame.
???
A partir do Java 1.5 pode-se usar o add diretamente sim.
Quanto a desenhar suas sprites, etc, desenha tudo em um buffer, e depois que tudo estiver desenhado vc manda pintar o buffer no seu componente.
se voce ta se refirindo a tecnica de double buffering , pintar 1° em background , eu ja faço isso sim...
bom valeu ai, ja consegui oque eu queria, agora ja posso dar continuidade a minha engine.. flw
|
SCJP 6.0 - 91%
SCWCD 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/07/2007 12:25:27
|
Gobain
JavaTeenager
![[Avatar]](/images/avatar/80cd71aee683e52c643ad59a03524806.png)
Membro desde: 27/06/2007 13:10:28
Mensagens: 176
Localização: Curitiba
Offline
|
davidbuzatto wrote:
sergiotaborda wrote:Para começar mude janela.add() para janela.getContentPane().add()
Não se faz add() diretamente num JFrame.
???
A partir do Java 1.5 pode-se usar o add diretamente sim.
Isso é uma dúvida q eu tenho mas nunca consegui sanar... qual a diferença entre dar add direto e usar o getContentPane?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/07/2007 12:40:57
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Alguns comentários:
1. Nem todo sprite precisa implementar Runnable. É muito mais fácil ter um só animation loop, especialmente se você garantir que a taxa de updates por segundo desse animation loop é constante.
Há dicas sobre isso no Killer Game Programming in Java e nesse artigo (em português). Com um loop só, rodando em uma única thread, fica mais fácil calcular a taxa de frames por segundo.
2. Se você vai usar DoubleBuffering, é melhor trabalhar com a classe BufferStrategy, do próprio Java. A vantagem dela é que, além da simplicidade, ela garante que não haverá tearing (raro, mas pode acontecer), ou seja, que a imagem não será atualizada exatamente no meio de um refresh do monitor. Essa técnica é chamada de Page Flipping.
Esse tópico trata exatamente desse assunto.
3. As dicas do sergio são ótimas. Sua classe Sprite deve manipular BufferedImages diretamente. Use a dica da pintura direta dada no artigo descrito no tópico 2. Você vai ver um grande ganho de performance, além de facilitar a migração da sua aplicação para o modo Full Screen (algo que realmente supreende, pois muita gente nem sequer sabe que é possível mudar a resolução e deixar em full screen em java). Se você quiser, baixe os fontes do meu jogo, aqui nesse link, e veja como foi implementado. E qualquer dúvida, continua postando!!!
|
|
|
 |
|
|