Tutorial Action Script 3 – 002

Tutorial Action Script 3 – 002

Em continuação com o tutorial. ( 001 )

Vamos falar agora das bases do Action Script 3.

2.Bases da linguagem

Como todas as linguagens de programação e sua devida iniciação, vou passar a explicar as bases da linguagem.

2.1.Ordem de Execução:

De forma geral o AS3 é executado de Cima para Baixo  e linearmente da esquerda para a direita:

passo 1 -> passo 2 -> passo 3

passo 4 -> passo 5

passo 6

Existem alguns argumentos que podem alterar esta ordem, mas as bases de execução são estas, esses elementos podem ser por exemplo a chamada de um passo diferente da ordem de execução, imaginemos:

passo 1 -> passo 2 (chama passo 6) -> passo 3

passo 4 -> passo 5

passo 6 (termina passo 6) -> passo 7

Neste caso a ordem seria

passo 1 -> passo 2 -> (passo 6) -> passo 3

passo 4 -> passo 5

Isto em si não é dificil de entender, o passo 2 chama o passo 6 e interrompe a execução normal, só depois de o passo 6 executado é que a execução prossegue para o passo 3.

2.2. Uso do ponto e virgula (semicolon) ";".

O uso oficial do ; Serve para executar mais que uma instrução numa linha e também para indicar o final de uma linha de código. Esta indicação no final da linha, ao contrário do que se pensa não é obrigatória a sua inserção no final de cada linha, visto que não é disparado qualquer erro, mas por uma questão de organização e por facilidade de compreensão de outras linguagens.

2.3. Uso do Trace.

O trace como em muitas linguagens é muito util no caso de debug, para obtermos valores de determinadas variáveis e funções. Este trace() coloca no painel output do flash o valor que lhe indicar-mos, no caso de trace("olá Mundo") aparecera no painel de debug olá Mundo. Notem que no caso do Flex, necessitam de ter o plugin com o debugger instalado, caso contrário não conseguirão fazer o devido debug.

2.4. Variáveis e tipos de dados.

As variáveis AS3, tais como as variáveis de outras linguagens de programação são usadas para guardar valores. As variáveis devem ser identificadas como únicas e que não interfiram com os elementos da própria linguagem em si.

Como por exemplo:

minhaVariavel1 = 1;

variav2 = 2;

Um erro:

var = 2;

Este erro acontece porque o var é explicitamente usado pela linguagem de programação para, curiosamente, declarar variáveis.

As regras base para declaração de variáveis são algumas; Não devem iniciar com números, devem apenas conter letras, o símbolo "$" ou o "_", não eixtir já uma variavel com esse nome, nem o seu nome ser igual a uma variavel ou função protegida/reservada pelo AS3.

Para evitar estes erros, o próprio AS notificará se a variavel já estiver em uso, ou se estiver protegida. Em ultimo caso o valor da variavel será inválido.

Mas para que tudo isto funciona a variavel deve ser devidamente identificada e declarada:

var minhaVar1:Number = 1; e como erro teríamos:

var minhaVar1:Number = "1"; já que aqui estaríamos a associar uma "string" a uma variavél que apenas suporta tipo "Number", ou seja, números.

Existem vários tipos de declarações de variáveis, vejamos apenas as mais comuns e seus dados:

Number: Ex. 2.57, pode guardar números inteiros e décimas/milhares

int: Ex -7, Qualquer inteiro

uint: Ex. 5, Qualquer número positivo.

String: Ex. "Olá", Qualquer cadeia de caracteres ou texto.

Boolean: Ex. true, Apenas verdadeiro (true) ou falso (false)

Array: Ex [1, 5, "sete"], Guarda mais que um valor numa variavel, String ou Número

Object: Ex. meuObjecto, Aqui uma das inúmeras possibilidades, podemos atribuir um objecto a uma variavel, quer seja um campo de texto ou um movieClip.

 

Exemplo de uma variavel Object.

var meuObjecto:Object = new MovieClip();

Declaramos a variavél meuObjecto como objecto e inicia-mo-la com um novo (new) MovieClip.

Na versão anterior do AS (2) esta declaração era opcional, mas no AS3 esta declaração é sempre obrigatória.

2.5. Condições e Operadores:

2.5.1. IF – if ()

Este é o mais comuns dos operadores de condições, verifica a comparação entre determinados elementos, mais comuns em comparação de variáveis.

Ex.

   1: var a:Number = 1;
   2: var b:String= "ola";
   3: var c:Boolean = false;
   4:  
   5: if (a == 1) {
   6: trace("a=1 é verdadeiro");
   7: }
   8:  

O uso do operador == é bastante importante, porque faz a comparação sem associação, ou sea, compara o valor absoluto. Alguns tipos de operadores são o > (maior que), < (menor que), >= (maior ou igual que), <= (menor ou igual que) bem como muitos outros. Dentro de um if podemos fazer várias comparações ao mesmo tempo, sendo que todas são verificadas dentro d mesmo if, e basta uma dessas condições não ser verdadeira (no caso de usarmos apenas o && ) para que invalide a comparação. Temos outros operadores, como o OR (||) ou o NOT (!) junto com o AND (&&).

Como exemplo a retornar falso o seguinte if (as 2 condições tem que se verificar):

   1: if(a == 1 && b =="mundo" ) { 
   2: trace("a=1 e b= mundo");
   3: }

O mesmo exemplo mas a retornar verdadeiro (apenas uma das condições tem que se verificar)

   1: if(a == 1 || b =="mundo" ) {
   2: trace("a=1 e b= mundo");
   3: }
   4:  

Regra geral o if testa sempre a "verdade", ou seja:

if (!c) vai retornar verdadeiro, já que verifica se o c = false.

O operador ! pode também ser usado para complementar o igual (=), como por exemplo verificar se o a é diferente do número 1:

if(a != 2) é verdade.

Junto com o if, podemos usar a o "else" para detectar a invalidação da comparação:

   1: if( a != 2) {
   2: trace("Sim, o a é diferente de 2")
   3: }
   4: else {
   5: trace("O a é mesmo igual a 2");
   6: }

E ainda dentro do else, podemos testar uma nova condição id, com o elseif();

   1: if( a == 2) {
   2: trace("Sim, o a é igual a 2")
   3: }
   4: elseif( a == 1) {
   5: trace("O a é mesmo igual a 1");
   6: }
   7: else {
   8: trace("O a não é igual a 2 nem a 1");
   9: }
  10:  

 

2.5.2. SWITCH – switch();

O switch passa por ser uma alternativa mais simples de compreender quando ser tornam necessárias várias comparações, visto que o if no caos de 5 comparações individuais seria muito extenso. Imaginemos no caso em cima, que queríamos verificar o a umas 5 vezes, teríamos 5 if’s e elseif’s, mas com o switch apenas o seguinte:

   1: switch (a) {
   2:     case 1:
   3:     trace("o a é igual a 1");
   4:     break;
   5:     case 2:
   6:     trace("o a é igual a 2");
   7:     break;
   8:     case 3:
   9:     trace("o a é igual a 3");
  10:     break;
  11:     case 4:
  12:     trace("o a é igual a 4");
  13:     break;
  14:     case 5:
  15:     trace("o a é igual a 5");
  16:     break;
  17:     default:
  18:     trace("o a não é ugual a nenhum dos valore acima.");
  19:     break;
  20: }

 

Em muitos casos o switch passa por ser a melhor opção. Os break; são essenciais ao funcionamento do switch, senão os case serão todos comparados. Apenas o ultimo case pode ser dispensado, visto que não existe mais condição nenhuma a seguir.

2.6. Ciclos.

Usamos os cliclos quando necessitamos de fazer uma repetição de determinada condição ou acção.

2.6.1. Ciclo FOR for()

Composto por 3 argumentos, o que, de onde, até onde. Este ciclo é muito util para fazer comparações ou execuções repetidamente um determinado numero de vezes, como por exemplo:

   1: for (var i:Number = 0; i < 15; i++) {
   2: trace("Olá numero "+i);
   3: }

Este ciclo é executado 15 vezes, contando com o i=0 até ao i<15 (i=14);

Um outro Exemplo:

   1: for (var i:Number = 15; i > 0; i--) {
   2: trace("Olá numero"+i);
   3: }

Este ciclo também é executado 15 vezes, mas da forma contraria, cada vez que é executado o i diminui até chegar a i=1;

2.6.2. Ciclo WHILE while()

Este é outro tipo de ciclo, que se executa enquanto a condição for verdadeira, tomemos como exemplo:

   1: var num:Number = 0;
   2: while (num < 5) {
   3: num++;
   4: }

Neste exemplo declaramos o num como Number com o valor 0, e o ciclo é efectuado enquanto essa variavel num for menor que cinco, ou seja, o ciclo é executado 5 vezes visto que a variavel num está a ser incrementada número a número, ou num++; é a mesma coisa que num=num+1;

Deve-se ter muita atenção a  usar loops (for e while) visto que estes loops utilizam muitos recursos do flash, e durante a sua execução praticamente nada será feito, ou seja, o loop interrompe o processo normal do action script e só liberta os recursos assim que termina. Ou seja, no loops em cima, principalmente no while, a ausência do num++ faria com que o ciclo entrasse em execução infinita, pelo que a aplicação / animação pararia literalmente e muito provavelmente até o browser irá parar.

Devemos ter ainda mais especial atenção quando temos alguns ou bastantes elementos gráficos a apresentar ao utilizador e principalmente não executar ciclos que possam ser muito complexos durante a construção da display list, e se for mesmo necessário devemos executa-los por ordem e nunca ao mesmo tempo que a apresentação de elementos críticos no stage.

O Stage em si é a área que servirá de portador/”container” para todos os elementos gráficos, caso eles existam.

Continua…

 

Abraço.

ccommons     

http://creativecommons.org/licenses/by-nc-nd/3.0/deed.pt


9 comments

add yours
  • michel melo June 4, 2008

    Parebens, esta muito bom.
    :)

  • Willians Martins June 4, 2008

    Muito bom, cade a parte3?
    kkkk

  • […] Action Script 3 – 004 » Tutorial Action Script 3 – 003 » Update no blog. » Tutorial Action Script 3 – 002 » Tutorial: Adobe Flex a partir do zero – Parte V » Está estourando a lateral como? […]

  • […] Santos on Junho 7, 2008 – 9:30 am Em continuação com o tutorial ( 001 – 002 – 003 – 004 […]

  • […] Santos on Junho 8, 2008 – 10:47 am Em continuação com o tutorial (001 – 002 – 003 – 004 – […]

  • Breno February 10, 2009

    Show de bola seu tuto apostila ;D

    vlws ai brow , to aprendendo mto ..

    ABS !

    o/

  • Débora February 3, 2010

    Olá Mário…mto bom teus post, comecei a ler agora (desde o início) e continuarei até o final, porém quero deixar minha contribuição em termos de performance:
    – Quando vc mostra como instanciar uma variável como objeto é importante lembra que o new só deve ser usado em último caso…pq diminui muito a performance, o que pode ser feito é var meuObjeto:ClasseObjeto =)
    – Quando vc vai fazer um for é melhor usar a variavel que percorre com um int no lugar de Number, isso aumenta a performance ex: for(int i;i<variavel;i++){}
    vlw espero ter ajudado!! =)
    e + uma vez parabéns pela iniciativa!!

  • Murilo March 10, 2010

    Começei a embarcar nesta leitura, que diga-se de passagem esta sendo muito útil… obrigado e me da licensa que vou ler a próxima….

Leave a Comment

Post