Bom, chegou a hora de que bastantes dos meus leitores esperaram… a continuação da minha serie de tutoriais sobre o AS3. Para aqueles que não acompanharam as primeiras 11 partes e para os que pretendem relembrar um pouco do que foi falado, segue uma categoria especifica aqui do blog com apenas esses tutoriais, exclusivamente dedicada à iniciação do Action Script 3. Aqui está o link onde podem encontrar todos os tutoriais.
Para os mais atentos foi lançada a compilação de todos estes tutoriais à um tempo atrás, basta procurarem no blog, que teve algum sucesso o que me levou a escrever uma segunda parte apenas em pdf que distribui inicialmente consoante uma doação, e que mais tarde também foi distribuída num pequeno “giveaway” e que agora finalmente será distribuída publicamente para o publico. Esta segunda parte do tutorial será dividida em vários post’s durante algumas semanas, e no final será colocado o pdf para download… se necessita urgentemente desta segunda parte (conta com 60 novas paginas) então entre em contacto comigo no twitter ou por email justificando essa necessidade que talvez sejam dos primeiros a receber esta segunda parte gratuitamente, embora haja alguns desses contactos que possam não ter resposta não desesperem… vai ser rápido para estar completamente publicado.
Este tutorial foca o Action Script 3 Orientado para o Flex, mas na sua base a estrutura é exactamente a mesma para o flash, por isso será com certeza útil também para os amantes do flash.
Nota: Não sendo um profissional, as técnicas adoptadas podem não ser as mais correctas, podendo mesmo existir alguns erros, mas bom… se detectarem algo “anormal” me informem.
Bom, vamos então à parte 12.
Não utilizem o sistema de comentários em baixo para tirar duvidas, elas não serão respondidas aqui! Usem antes o fórum do blog disponivel em: http://forum.msdevstudio.com
Continuando… Falaremos agora de (notem que os pontos podem nao estar seguidos, a versão final sofreu pequenas alterações):
5.3. Relacionamento entre classes.
Neste momento a nossa class passa a pertencer ao grupo de classes pessoais que podemos adicionar ao nosso projecto.
Um dos pontos muito úteis é o reaproveitamento do código para as mais variadas coisas, e de entre as quais podemos usar um relacionamento entre varias classes pessoais.
Um exemplo pode ser a definição de certas constantes numa class. Vamos supor que necessitamos de ter definidos tamanhos e um titulo para vários painéis feitos pela class em cima, poderemos efectuar 2 tipos de classes para este efeito, embora para este tipo de definições possamos usar uma class sem “inicializador” (apenas servirá para definir constantes / variáveis)
{
public class def
{
public const PANEL_W:int = 400;
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = "Painel personalizado";
}
}
Esta class não necessita de ser inicializada porque apenas apresenta parâmetros fixos da nossa aplicação e não têm um constructor.
Na nossa class em cima vamos colocar em prática o uso desta nossa class, editando a class teste.as e fazendo o seguinte.
No topo a seguir aos imports coloquem:
e na nossa função criado() substituimos a linha:
por
Neste momento o titulo de cada painel criado será iniciado pela definição colocada na class def:
vamos também definir o tamanho fixo do nosso painel da class, trocando na função teste() o seguinte:
this .width=270;
this .height=270;
por
this .height=def.PANEL_H;
<p style="text-align: justify;">
Desta forma, todos os paineis criados pela nossa class teste terão sempre as definições :
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = "Painel personalizado";
Este tipo de definições são muito úteis quando há necessidade de ter sempre constantes na nossa aplicação, por exemplo num caso de uma aplicação que se liga a um banco de dados, podemos guardar o host e informações de login.. neste caso, apenas com um problema. Estas constantes apenas podem ser lidas, visto que são constantes e apenas podem ser alteradas pelo criador da aplicação e compilando de novo a aplicação.
Este trabalho poderia ser feito pela class seguinte:
{
public class definicoes
{
public const PANEL_W:int = 400;
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = "Painel personalizado";
<p style="text-align: justify;">public function definicoes()
{
<p style="text-align: justify;">//constructor</p>
<p style="text-align: justify;">}</p>
<p style="text-align: justify;">}
}
Mas neste caso teríamos algum código inválido, ou seja, o definicoes() ira ser inicializado em vão.. não temos necessidade de o ter no código (embora o possamos ter)
O action Script 3 é tão versátil que nos permite inclusive extender uma class já feita para trabalhar com outros exemplos, vejam o exemplo seguinte que estende a nossa class de definições.
{
public class fullDef extends def
{
public const PANEL_DATE:String = "20/09/2008";
<p style="text-align: justify;">public function fullDef()
{
<p style="text-align: justify;">}</p>
<p style="text-align: justify;">}
}
Este método cria uma nova class fullDef que estende a nossa class def, por palavras mais simples esta class usa as definições da class def em si própria, ou seja, herda (hereditária) as variáveis da class que está a ser estendida:
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = "Painel personalizado";
<p style="text-align: justify;">
e trata-as como se fossem suas, ou seja estas mesmas variáveis estarão disponíveis na class fullDef, basta testarem da seguinte forma:
e a partir deste momento as constantes da nossa class def de definições estarão também disponíveis nesta nossa class, juntamente com a constante PANEL_DATE que adicionei em cima, pela seguinte forma:
fid.PANEL_H;
fid.PANEL_TITLE;
fid.PANEL_DATE;
De notar que uma constante não pode ser alterada depois do nosso código ter sido compilado num ficheiro .swf.
Para esse efeito usamos apenas private var, e se o formos fazer usando a nossa class de definições e a class fullDef deveremos usar o método [Bindable] já explicado anteriormente e que vai permitir que todas as classes que utilizem a nossa class def sejam actualizados com novos valores.
Esta extensão funciona com variáveis, constantes, e funções quer das nossas classes pessoais ou das classes do Flex / Flash.
Bom, por agora é tudo… até uma próxima…
Sugestões? criticas? e porque não elogios? deixe um comentário…
Duvidas? Use o fórum.



