Tutorial Action Script 3 – 012

Tutorial Action Script 3 – 012

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)
[coolcode lang=”actionscript”] package teste
{
public class def
{
public const PANEL_W:int = 400;
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = “Painel personalizado”;
}
}
[/coolcode] 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:
[coolcode lang=”actionscript”] import teste.def;
[/coolcode] e na nossa função criado() substituimos a linha:
[coolcode lang=”actionscript”] _nomePessoal=”Teste Painel “+Math.floor(Math.random()*15);
[/coolcode] por
[coolcode lang=”actionscript”] _nomePessoal=def.PANEL_TITLE+Math.floor(Math.random()*15);
[/coolcode] Neste momento o titulo de cada painel criado será iniciado pela definição colocada na class def:
[coolcode lang=”actionscript”] public const PANEL_TITLE:String = “Painel personalizado”;
[/coolcode] vamos também definir o tamanho fixo do nosso painel da class, trocando na função teste() o seguinte:
[coolcode lang=”actionscript”] //definimos o painel
this .width=270;
this .height=270;
[/coolcode] por
[coolcode lang=”actionscript”] this .width=def.PANEL_W;
this .height=def.PANEL_H;

[/coolcode]

Desta forma, todos os paineis criados pela nossa class teste terão sempre as definições :
[coolcode lang=”actionscript”] public  const PANEL_W:int = 400;
public  const PANEL_H:int = 300;
public  const PANEL_TITLE:String = “Painel personalizado”;
[/coolcode] 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:
[coolcode lang=”actionscript”] package  teste
{
public class definicoes
{
public const PANEL_W:int = 400;
public const PANEL_H:int = 300;
public const PANEL_TITLE:String = “Painel personalizado”;

public function definicoes()
{

//constructor

}

}
}
[/coolcode] 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.
[coolcode lang=”actionscript”] package  teste
{
public class fullDef extends def
{
public const PANEL_DATE:String = “20/09/2008″;

public function fullDef()
{

}

}
}
[/coolcode] 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:
[coolcode lang=”actionscript”] public  const PANEL_W:int = 400;
public  const PANEL_H:int = 300;
public  const PANEL_TITLE:String = “Painel personalizado”;

[/coolcode]

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:
[coolcode lang=”actionscript”] var  fid:fullDef = new fullDef;
[/coolcode]

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:
[coolcode lang=”actionscript”] fid.PANEL_DATE;
fid.PANEL_H;
fid.PANEL_TITLE;
fid.PANEL_DATE;
[/coolcode] 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.


2 comments

add yours
  • jessica March 8, 2011

    Olá,tem como eu fazer um sistema de comentários em flash de preferencia no action escript 2.
    e que funcione rs

  • Mário Santos March 10, 2011

    Jsessica, é possivel fazer, mas no entanto usando flash é altamente desaconselhavel, e então usando as2 ainda pior… O as2 está obsoleto e o seu destino é a falta de suporte.

    Ainda assim, pode faze-lo usando um sistema com uma ligação a uma base de dados o que no flash com as3 já por si é meio complexo, então usando as2 as coisas pioram muito.

    Infelizmente isso dará bastante trabalho…
    O meu conselho, tente encontrar uma solução as3 ou mude o sistema de comentarios para html / php que fica bem mais facil de fazer / encontrar solução feitas opensource.

Leave a Comment

Post