EE Against the time – tradução citrus engine HUD

Tradução do trecho Accessing Graphics ( http://docs.google.com/Doc?docid=0AdP5h505g0lKZGc1eDZ4bmtfMTc5Z3NkeG1iaG0)

Os gráficos do Citrus Engine sempre vem a partir de uma classe abstrata chamada AbstractArt. O termo AbstractArt (Arte Abstrata) não tem nada haver com os confusos e modernos desenhos que você vai encontrar na sua galeria de artes local. A classe AbstractArt é simplesmente uma classe abstrata em toda a art do Citrus Engine. Cada Grafico e Sprites do do Citrus Engine vai ser extendido a Arte Abstrata.

A classe AbstractArt se extendo a classe Sprite, que e’nativa do flash, então você pode adicionar o Sprite em um objeto display velho, como você normalmente faz (entretanto, o Citrus Engine já faz isto para você). Você também pode adicionar um “evento escuta”, os event listeners para este objeto.

A classe abstractArt (e todas suas subclasses) é a embalagem do do verdadeiro grafico que você fez o load ou indexou no seu game. Se você precisar de um acesso direto para o objeto mostrado que você indexou ou fez o load, você pode acessa-lo pela propriedade AbstractArt.moviclip. Isto retorna propriamente uma referencia ao movieclip que é associado com esta classe embalagem. Para indexar uma qualidade, esta é uma referencia direta para a instancia criada. Para os bitmaps e qualidades externas, este é o container para o loader. Isto vai apenas retornar uma instancia válida depois da qualidade estiver totalmente inicializada, isto é, depois de inicialmente ter sido chamada, e a qualidade for baixada.

As classes concretas que são subclasses da AbstractArt são ExternalArt, EmbeddedArt, e BitmapArt. Todos seus graficos vão ter um destes tipos.

  • ExternalArt é o tipo usado para fazer o load do swf;
  • EmbeddedArt é o tipo usado para fazer a indexação do MovieClips;
  • BitmapArt é o tipo usado para fazer o load da imagem bitmap;

Você ocasionalmente vai precisar de acessar diretamente os graficos do seu objeto. Se você quiser fazer coisas como adicionar eventos de clique do mouse, ou um HUD em volta dos personagens, então você vai querer ter uma referencia para o seu grafico. Você pode fazer assim:

var hero:Hero = ce.manager.getMachineByType(Hero) as Hero;
var heroArt:AbstractArt = ce.camera.getArt(hero as IArtData);

A primeira linha refere-se ao Hero (Heroi) como ele se apresenta todo o tempo.

A segunda linha refere-se ao grafico associado com a machine do hero. Você pode ver que o metodo getArt() da camera retorna um objeto AbstractArt.

A abstractArt