No artigo anterior, vimos o que são pacotes, classes e objetos, e também como e porque usá-los.
Agora, vamos utilizar os conhecimentos que temos para criar novas coisas, coisas mais úteis (eu espero). Vamos começar por um cara que é figura batida em qualquer site: o botão.
Não importa pra que, sempre existe um botão em um site, e das mais variadas formas. E, por ser algo simples, ele é o exemplo perfeito para começarmos a nos habituar com a linguagem.
Quando falamos em botão no ActionScript, temos 2 tipos de classes relacionadas diretamente com os botões: a classe Button que é nada mais nada menos que o componente Button, a classe SimpleButton que representa toda e qualquer instância do tipo button criadas na IDE (Insert > New Symbol > Button). Temos ainda a classe ButtonBase, que tem como objetivo ser uma classe base para todos os botões, mas ela não existe no ActionScript para Flex, e é destinada apenas a componentes.
Com a classe Button nós podemos adicionar, controlar e manipular uma instância do componente Button. O único requisito, no entanto, é que o componente Button esteja presente na biblioteca do nosso FLA.
Crie um novo arquivo Flash File (ActionScript 3.0). Abra o painel de componentes (Window > Components) e arraste o componente Button para a biblioteca.
Selecione o frame vazio da timeline e abra o painel de ações (Window > Actions).
// Nova instância de Button.
var objButton:Button = new Button();
// Definindo o label do botão.
objButton.label = "Meu Botão";
// Adicionando o botão ao palco.
this.addChild(objButton);
Primeiro importamos a classe Button para que possamos utilizá-la. Em seguida, criamos uma nova instância da classe Button, definimos o texto do label e adicionamos o objeto criado ao palco.
Simples, não? Com a classe Button temos como alterar e manipular o nosso componente Button que está no palco. O componente já vem com diversas propriedades e métodos prontos, por isso seu uso é simples e rápido, pois ele já vem com muita coisa pronta.
Vamos alterar a cor da fonte do label do nosso botão:
// Nova instância de Button.
var objButton:Button = new Button();
// Objeto TextFormat.
var txtFormat:TextFormat = new TextFormat();
// Definindo a cor do texto.
txtFormat.color = 0x0099CC;
// Definindo o label do botão.
objButton.label = "Meu Botão";
// Definindo o formato do texto ao botão.
objButton.setStyle("textFormat", txtFormat);
// Adicionando o botão ao palco.
this.addChild(objButton);
Essas são algumas das muitas coisas que podemos fazer com a classe Button. Existe também como personalizar o formato do componente. Experimente ir na biblioteca, clicar com o botão direito sobre o componente e selecionar a opção Edit.
A tela que abrirá contém todos os estados do botão. Através dela você pode alterar a forma do componente, mas dependendo da forma desejada, isso pode se tornar uma tarefa um pouco mais complicada.
Quando você cria, por exemplo, um quadrado em seu palco, e converte ele para um símbolo do tipo Button, você está na verdade criando uma instância da classe SimpleButton.
O bom e velho símbolo Button tem 4 estados, que você deve conhecer bem:
Bom, se o símbolo do tipo Button é na verdade uma instância da classe SimpleButton, isso quer dizer que qualquer objeto do tipo SimpleButton terá esses 4 estados, certo? Vamos ver isso de perto.
Crie um novo Flash File (ActionScript 3.0). Crie no palco um retângulo de cor azul (por exemplo, se preferir outra cor fique à vontade), e em seguida transforme-o em um Símbolo (Modify > Convert to Symbol) e nomeie-o upState. Assinale a opção Export for Actionscript, e em seguida pressione OK.

Traga sua atenção para o campo Class que se habilita, trazendo o mesmo nome de seu elemento. Este campo, serve para indicar o nome da classe à qual o seu símbolo pertence. Se a classe definida não for reconhecida como uma classe externa, que é o caso, o Flash criará a classe internamente.
BaseClass é a classe na qual o objeto será baseado. Mais tarde você entenderá como isso funciona quando falarmos de Herança.
Dessa forma, se quisermos criar uma instância deste elemento dinâmicamente, utilizaremos new upState(). Lembre disso, pois utilizaremos mais adiante.
O que fizemos foi criar o primeiro estado (up) do nosso botão. Repita a mesma operação mais três vezes (utilizando cores diferentes) e nomeie os símbolos como downState, overState e hitState, respectivamente.
Feito isso, remova qualquer elemento que esteja no palco, e abra a biblioteca (Window > Library) e verá que todos os símbolos criados estarão lá. Cada símbolo representará um estado do botão. Agora, vamos através do ActionScript, criar uma instância da classe SimpleButton, e utilizar esses símbolos como seus estados.
Abra o painel de ações (Window > Actions) e insira o seguinte código:
// Objeto SimpleButton.
// new SimpleButton(up state, over state, down state, hit state);
var objButton:SimpleButton = new SimpleButton(new upState(), new overState(), new downState(), new hitState());
// Posicionando objeto.
objButton.x = 150;
objButton.y = 50;
// Adicionando objeto ao palco.
this.addChild(objButton);
Importamos a classe SimpleButton, em seguida criamos o objeto SimpleButton, passando como parâmetro os 4 objetos que a classe deve utilizar como estado. Lembre que upState é o nome da classe que definimos para nosso símbolo na biblioteca, mas como a classe não existe (em um caminho físico), o Flash a cria internamente.
Depois, só ajustamos a posição do objeto, pra dizer que fizemos algo além de criar um botão.
Teste o filme (Control > Teste Movie), e verá um belo exemplar de botão.
Apesar de eu acreditar piamente que criar um botão 100% através do código, não seja uma das maneiras mais práticas, vou apresentar um exemplo com o intuito de praticar a linguagem.
Seguindo ainda na SimpleButton, crie um novo Flash File (ActionScript 3.0). Ao contrário do outro, o desafio aqui é não criar absolutamente 1 linha sem que seja pelo código. O primeiro passo é planejar o que vamos precisar para criar o nosso botão.
Como já sabemos, um objeto SimpleButton tem 4 estados (up, down, over e hit), e partindo deste princípio, precisaremos de algo que crie a forma do botão para os 4 estados. Eu sugiro criar uma classe chamada ButtonShape, que será responsável por "criar a forma" do nosso botão.
Fora isso, precisamos de uma classe que crie o objeto botão entre outras coisas. Essa classe será a classe ButtonItem.
No diretório onde você está gravando os exercícios (se é que está), crie uma pasta chamada app, e dentro desta uma nova pasta chamada display.
O que estamos fazendo é criando o pacote (as pastas pra organizar, como vimos na Parte 1) para as nossas novas classes. O pacote app contém as classes da aplicação (pacote principal), e o pacote display contém as classes para os elementos visuais (no caso, um botão) de nossa aplicação.
Crie um novo arquivo ActionScript File e salve-o dentro de app/display com o nome de ButtonShape.as.
Vamos analisar linha a linha o que fizemos aqui, para que você entenda bem.
Bom, nossa classe para criar o formato está pronta, agora vamos à classe responsável por criar o nosso botão.
Crie um novo ActionScript File, e salve o arquivo em app/display com o nome de ButtonItem.as.
Volte para o arquivo FLA, criado anteriormente, salve-o com o nome de SimpleButton2.fla junto do nosso pacote app (junto, não dentro do pacote).
No painel de ações (Window > Actions) insira o seguinte código:
// Objeto ButtonItem.
var item:ButtonItem = new ButtonItem();
// Posicionando item.
item.x = 100;
item.y = 100;
// Adicionando o objeto ao palco.
this.addChild(item);
Teste o filme e verá um botão, semelhante ao do exercício anterior, mas criado completamente em ActionScript, e o melhor, utilizando classes.
A lógica, a princípio, pode parecer complicada, mas na verdade ela é bem simples. Neste exemplo utilizamos 2 classes, uma responsável por criar o formato do botão (ButtonShape) e outra responsável por criar o botão propriamente dito (ButtonItem).
Tudo que for relacionado a forma do botão, nós iremos alterar na ButtonShape, e tudo que for relacionado ao botão propriamente dito, nós iremos alterar na ButtonItem.
No final das contas é tudo uma questão de organizar o código, de uma forma que dê para reaproveitar o máximo o que já foi feito, evitando a repetição desnecessária. O conceito de herança ajuda significativamente nessa parte, uma vez que evitamos ter que reescrever tudo que já existia em uma outra classe.
Futuramente poderemos implementar novas funcionalidades em nossos botões, ao passo que formos aprendendo.
Mozart Petter
| Anexo | Tamanho |
|---|---|
| Parte 2.zip | 1.08 MB |
Comentários
Duvida sobre classes.
Olá,
Como sei quando o "this" esta referenciando o palco ou outro objeto?
E como faria para citar e adicionar objetos no palco diretamente da classe?
Parabéns
Cara, gostei muito desse artigo, parabéns.
Agora tenho uma dúvida.
Imaginamos que eu crie no photoshop todos os estágios do botão.
Como eu colocaria no código as imagens.png?
Se puder me tirar essa dúvida eu agradeço muito.
Show cara, parabéns novamente.
Abraço
Meus parabens!!!
Cara, parabens pelo excelente tutorial, mais pessoas deveriam fazer tutoriais tao bons e em portugues na net, parabens pela iniciativa, continue assim, aguardo mais, quero mais!!!!!!!!