- 18 de January de 2012

Organizar as diversas camadas de imagens

Classe usada para organizar todos os componentes visuais do jogo, organizando os elementos em camadas, usando um eixo z, onde os primeiros elementos gráficos têm uma prioridade maior.
Seus objetos são criados por um construtor sem parametros:

LayerManager camadas = new LayerManager();

Para inserir elementos na LayerManager usa-se o método append(<Layer>).

camadas.append(fundo);
camadas.append(ator);

No caso acima, o cenário fundo tem maior prioridade e será desenhado na frente do personagem, que pode não ser visualizado.
O correto é inserir os personagens e depois os cenários, exceto em casos em que o cenário deva aparecer na frente do personagem, por decisão estética do jogo.

camadas.append(ator);
camadas.append(fundo);

LayerManager tem outros métodos importantes como: remove(<Layer>), insert (<Layer>, <camada>), paint(<Graphics>, <x>, <y>) e setViewWindow( <x>, <y>, <largura>, <altura>).

Janelas de Visualização

Partes do LayerManager

A movimentação de cenário é implementada com a variação de qual parte da LayerManager estamos vendo, através do método setViewWindow(int x,int y,int largura,int altura) ele cria a janela de visualização, que é uma parte pequena de uma imagem maior armazenada no LayerManager.

Colocando na tela

Resultado do paint(g,x,y)

Para desenhar todo o conteúdo gráfico basta chamar o método paint(<g>, <x>, <y>), que se encarrega de desenhar todos os seus componentes, da janela de visualização definida, no objeto “g” (tipo Graphics) na posição “x,y”.

Usando LayerManager

  private LayerManager camadas;
  private TiledLayer fundo;
  private Sprite ator;
  // no construtor, após criar ator e fundo 
    camadas = new LayerManager();
    camadas.append(ator);
    camadas.append(fundo);
  // no método de movimentação de personagens -> para mover o cenário
    camadas.setViewWindow(x, y, largura, altura);
    //define quadro vísivel: x,y->posição interna do LayerManager no método de desenho da tela
    camadas.paint(g, x, y); 
    // g-> Graphics; x,y->posição na tela onde desenhar o quadro definido acima

Leave a Reply

Your email address will not be published. Required fields are marked *