DevSecOps

4 jun, 2007

O mundo novo do AS3

Publicidade

A Adobe lançou o Flash da linha CS3 (Creative Suite 3) com uma nova arquitetura de programação com o AS3 (ActionScript 3), ou talvez nem tão nova assim. Na verdade, já estávamos seguindo para esta estrutura no AS2 (ActionScript 2), porém tínhamos a flexibilidade de programar tanto em AS1 (ActionScript 1) quanto em AS2 ao mesmo tempo, o que nos levava, muitas vezes por uma questão de facilidade, a fazer o que fosse mais prático, usando apenas o necessário no AS2.

Pois bem, essa moleza acabou: ou fazemos o nosso serviço direito para podermos aproveitar ao máximo o novo Flash CS3 ou ficamos para trás. Para aqueles que ainda não se entenderam muito bem com a utilização de classes, se esforcem, pois agora elas serão totalmente indispensáveis para o bom funcionamento da aplicação.

Aqui pretendo mostrar a vocês alguns recursos mínimos necessários para trabalhar com o Flash, afinal nem um simples botão continua o mesmo. Vamos compreender, inicialmente, que selecionar um objeto – seja ele um botão ou MovieClip – e colocar uma ação não funciona mais; toda a programação deve estar em arquivos “.as”, que são os arquivos de classes ou ainda na linha de tempo. Vamos começar, então, com algo bem simples, como variáveis.

Declarando variáveis

Agora temos sempre que declarar as variáveis que vamos usar; não será mais aceito o uso de qualquer tipo de dados sem a devida declaração. Vejamos alguns exemplos:

var texto:String = "Qualquer texto"; // Aceita apenas textos entre aspas, string.
var numero:Number = 123456; // Aceita números positivos e negativos.
var inteiro:int = -1234; // Aceita inteiros positivos e negativos.
var positivo:uint = 1234; // Aceita apenas inteiros positivos.
var boleano:Boolean = true; // Aceita apenas true ou false; não é recomendado utilizar 0 ou 1.

Há ainda muitos outros tipos de declarações – o importante é não esquecer que tudo deve ser declarado. Mas é claro que há exceções: quando arrastamos um botão da biblioteca e o instanciamos, por exemplo, como “meuBotao”, não precisamos declará-lo, ou mesmo um MovieClip, componente ou objeto de vídeo. No momento em que o colocamos no palco já será declarado e, ao definirmos seu nome de instância, podemos facilmente identificá-lo na programação. Não se esqueçam de que, uma vez declarado o objeto ou variável, não podemos colocar valores diferentes de sua declaração; uma vez declarada uma string, não podemos colocar valores numéricos que não estejam entre aspas, ou seja, previamente convertidos para string.

Criando botões

Aproveitando o exemplo do botão, criamos um simples botão e vamos colocá-lo no palco. Vocês verão em artigos sobre o AS3 que até mesmo um simples botão tem a sua classe de manipulação, a SimpleButton – eu diria que é um nome bem apropriado -, mas não entraremos nesses detalhes neste artigo. Agora, com o botão instanciado no palco, tente colocar isso no frame de ações:

var meuBotao:SimpleButton;

Uma vez que já exista um botão instanciado no palco com esse nome, vocês verão que a janela de Compiler Erros irá nos notificar de nossa falha. Como mencionado anteriormente, não há necessidade de declarar um objeto já existente no palco. Pois bem, vamos remover o comando citado acima e colocar o seguinte:

// Criamos o método que será executado ao clicarmos no botão.
// Esse argumento do tipo Event é obrigatório, pois, além de o utilizarmos para acessar o botão, também retorna alguns dados interessantes para usarmos futuramente.
var acaoClicar:Function = function($evento:Event){
// Veja que dados interessantes: sabemos até a posição no palco em que o mouse estava no momento do clique.
trace($evento);
// Através desse comando podemos fazer qualquer coisa com o botão, como se estivéssemos usando o nome de instância dele.
trace($evento.target);
// Agora a propriedade alpha não é mais de 0 a 100, e sim de 0 a 1. Isso significa que, se quisermos, por exemplo, 50% de alpha, não definimos mais 50, e sim 0.5.
// Sabendo disso, façamos uma condição: se alpha for diferente de 1 (100%), deixamos ficar como 1; senão, mudamos para 0.5 (50%).
if($evento.target.alpha != 1){
$evento.target.alpha = 1;
}else{
$evento.target.alpha = 0.5;
}
}
// Aqui, dizemos para meuBotão monitorar um evento de mouse (neste caso, o clique) e, quando isso acontecer, executamos o método "acaoClicar".
meuBotao.addEventListener(MouseEvent.CLICK,acaoClicar);

Geramos o swf e vemos então que, ao clicar no botão, ele fica transparente; ao clicar de novo, ele volta ao normal, exatamente como especificamos na nossa condição. Perceba que a propriedade “alpha” não precisa mais ser escrita com um underline “_alpha”; outras propriedades, tais como as de coordenadas “x” e “y”, também não se utilizam mais do underline. Vamos agora acrescentar mais um botão no palco e instanciá-lo como “segundoBotao”; no frame dos scripts, vamos colocar mais uma linha com o seguinte:

segundoBotao.addEventListener(MouseEvent.CLICK,acaoClicar);

Notem que, apesar de usarmos o mesmo método, cada botão só muda sua própria propriedade alpha, sem interferir no outro, afinal, como já havia citado antes, isso se deve ao uso do Event no argumento do método, que representa os dados do botão clicado que tenha sido associado a ele pelo addEventListener.

Podemos dizer muito mais sobre o botão, mas, por hora, dêem uma olhada na biblioteca do SimpleButton para conhecer todas as propriedades, métodos e eventos que podemos usar.

Onde está o getURL?

Como muitos outros recursos do Flash, o getURL foi reorganizado para funcionar a partir de uma combinação de outras classes. Para você ter uma idéia, para abrirmos uma página e enviarmos algumas variáveis, precisamos das classes URLVariables, URLRequest e do navigateToURL. Parece complicado, mas na verdade ficou mais organizado. Veja o exemplo:

// Vamos começar colocando o endereço do site que queremos abrir.
var endereco:String = "http://www.imasters.com.br";
// Mas não é só isso: precisamos de uma classe para colocar todas as variáveis que pretendemos enviar pela url.
var variavel:URLVariables = new URLVariables();
// Vamos acrescentando quantos valores quisermos para a página.
variavel.valor1 = 123;
variavel.valor2 = "texto";
// Precisamos usar uma classe que manipula os dados para serem enviados pela url.
var enviar: URLRequest = new URLRequest(endereco);
// Pegamos todas as variáveis que queremos enviar e associamos ao objeto de envio.
enviar.data = variavel;
// Através do enviar, definimos outras propriedades, como o método get ou post, mas por hora vamos apenas enviar os dados.
navigateToURL(enviar);

Finalizando

Poderíamos ficar analisando apenas esses três tópicos e ainda assim teríamos muito a ser considerado. Há muitos recursos novos e interessantes para conhecermos, tais como:

// Constante: uma vez declarado seu valor, ele nunca mais poderá ser alterado.
const powerBy:String = "Renato B. Pacheco";
trace(powerBy);
// Ao forçarmos a alteração de seu valor, seremos notificados pela janela de saída.
powerBy = "Outro autor"
// --------------------------------------------------------------------------
var valor:String = "Qualquer coisa";
// Trace: diga adeus à concatenação de valores no trace. Vamos apenas separá-los por vírgula.
trace("Valor da variável:", valor, "------");
// --------------------------------------------------------------------------
// Mais alguns comandos foram banidos do Flash.
trace(2 <> 1) // não pode mais.
trace(2 != 1) // ok.

Como podem ver, há muita coisa nova não só na forma de se fazer, como novos recursos também. É muito importante conhecermos individualmente ao menos um pouco das classes do Flash (isso quando possível, afinal, às vezes, uma classe depende de outra para atingir sua finalidade) antes de começarmos a criar nossas próprias classes personalizadas.

Nos próximos artigos, ainda falaremos do AS2 e do AS3 tentando compreender os recursos à nossa disposição e criando os nossos próprios meios.

Clique aqui para baixar o arquivo deste artigo.

Até o próximo artigo.