Thread autonoma

1 resposta
N

Uma classe cuida do Sprite do personagem principal do jogo.
Eu quero que nessa classe exista uma thread que é iniciada assim que essa classe for instanciada. E essa Thread deve ficar em loop para que sejam feitos todas as checagens com esse Sprite, tipo (Colisão, Movimento, Input, etc).

Uma outra classe (classe que contém o loop principal do MIDlet) apenas instancia essa classe e desenha esse Sprite.

Assim:

public class MeuSprite extends GameCanvas implements Runnable {
      public Sprite spriteJogador;
      // etc 
      // etc   
      // configurações do sprite.
      //...
      //...   
      
      public MeuSprite() {
         Threa t = new Thread(this);
         t.start();
      }
  
      public void run()  {   // deve ser o loop da classe
         // chamar métodos para checagem de colisão, input etc...
      }
   
  }

Agora a classe que tem o loop principal do MIDLet:

public class MeuGameCanvas extends GameCanvas implements Runnable {

   // instanciando a classe MeuSprite.

   MeuSprite sprite = new MeuSprite();     
  
  // Agora a Thread da classe MeuSprite deveria ser iniciada, 
  // pois o método start() é chamado dentro do construtor daquela classe.
  // Ou mesmo assim eu devo chamar sprite.start() ?               
                                                         
   public MeuGameCanvas() {
      Thread t = new Thread(this);
       t.start(); 
       LayerManager layer = new LayerManager();
       layer.append(sprite.spriteJogador); 
  }

   public void run() {  // aqui é o loop principal.
      // chamar um metodo para desenhar na tela o sprite.
      desenharSprite();
   }

   public void desenharSprite() {
      sprite.spriteJogador.setLocation();
      layer.paint(g, 0, 0); 
  }

}

Isso é possível?

1 Resposta

C

Até pode.
Mas veja, você terá uma Thread para cada “personagem”, então, o meu conselho é: Faça UMA Thread que faça esse trabalho de teste de colisão, etc para todos os “personagens”.

E não esqueça de Fazer uma sleep no run :wink:

Criado 13 de janeiro de 2007
Ultima resposta 13 de jan. de 2007
Respostas 1
Participantes 2