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.




6 Comentários
Parebens, esta muito bom.
Muito bom, cade a parte3?
kkkk
Parte 3:
http://msdevstudio.com/blog/2008/06/05/tutorial-action-script-3-003/
Show de bola seu tuto apostila ;D
vlws ai brow , to aprendendo mto ..
ABS !
o/
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!!
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….