Em continuação do tutorial. (001 – 002).
2.7. Arrays
Enquanto as variáveis ”normais” apenas suportam um tipo de dados e um valor, um array consegue suportar vários valores. Num exemplo prático, suponhamos que necessitamos de guardar 50 nomes de pessoas, não vamos declarar 50 variáveis visto que o processamento do action script se tornaria mais lento, além do nosso código ficar enorme.
Como foi dito, podemos guardar num array vários valores, fazendo a declaração da seguinte forma.
var meuArray1:Array = [1, 2, 3];
var meuArray2:Array = new Array();
Ambos os arrays podem ser facilmente modificados, vejamos:
- Como adicionar um elemento ao nosso array:
meuArray2.push(1);
E o valor 1 é adicionado ao array;
-Como remover o ultimo item ao array:
meuArray2.pop();
-Como buscar o valor de determinada posição dentro do array:
var meuArray3:Array = [''1'','' 2'','' 3''];
trace(meuArray[0]); //irá retornar a string ''1''
Existem muitas mais operações relativas a arrays, como os percorrer, comparar, eliminar um item em certa posição, procurar, etc… Os arrays têm a possibilidade de serem também arrays matriciais ou multidimensionais e receber varias variáveis em varias posições, bem como receber outro array em cada posição que falaremos mais à frente… para já vamos passar aos Objectos.
2.8. Objectos (Object)
Depois de alguma experiência com Actioin Script, facilmente se apercebem que muitas propriedades de Objectos, por exemplo um MovieClip, são acedidas e disponibilizadas propriedades através de um acesso rápido, como por exemplo:
var meuMovieClip:MovieClip;
meuMovieClip.x=posição_eixo_xx;
meuMovieClip.y=posição_eixo_yy;
meuMovieClip.width=tamanho_comprimento;
e muitas mais propriedades, isto se chama um objecto e desde já ficamos a saber que grande parte de componentes actionScript são derivados de Objectos.
Como o AS3 é bastante versátil, permite-nos também criar o nosso objecto personalizado e definir-mos as caracteristicas que quisermos… vejamos:
var objectoTeste:Object = new Object();
objectoTeste.param1=5;
objectoTeste.param2=false;
objectoTeste.param3=null;
Como podemos ver pelo exemplo, criámos as nossas próprias propriedades do nosso objecto sem dificuldade nenhuma, e para lhes aceder é tão simples como:
var zed:Boolean;
zed=objectoTeste.param2;
trace("o valor do zed é "+zed);
Alem de servir para criarmos os nossos proprios objectos, pode servir também para um rápido acesso a um objecto com muitas caracteristicas, e principalmente torna-se muito util para enviar um conjunto de dados para uma função em vez de utilizarmos um array, como no exemplo que se segue usando o objecto em cima:
function mostraEstadoObjecto(obj:Object):void {
trace(obj.param1);
trace(obj.param2);
trace(obj.param3);
}
mostraEstadoObjecto(objectoTeste);
Serão então apresentados os valores das devidas propriedades do nosso objectoTeste; Notem que o obj recebido na função passa a ser considerado como o nosso objectoTeste e por isso com as mesmas propriedades.
2.9. Funções (function)
As funções são uma parte indispensável para os programadores em geral, e no AS3 são também uma parte crucial. Sem funções, o código seria executado conforme indicado anteriormente; sequencial de cima para baixo e da esquerda para a direita, com as funções, o código dentro delas apenas é executado quando elas são chamadas, e apenas indexadas pelo runtime.
As funções tornam o nosso código mais limpo, evitando que sejam executadas instruções e processamentos sem necessidade nessa altura. Para criar uma função, temos alguns passos simples a seguir, principalmente porque aqui reside uma grande diferença do AS2 que é a necessidade de declarar o seu tipo, retorno e possíveis argumentos.
Temos como exemplo a seguinte função simples:
private function mostraMsg(){
trace("olá");
}
Que pare ser executada deve ser chamada com o comendo a seguir:
mostraMsg();
Esta função em si não está bem declarada, mesmo não devolvendo nada deve-se indicar ao compilador que ela não devolve mesmo nada, ficaria então assim:
private function mostraMsg():void {
trace("olá");
}
As funções devem também ser indicadas com o tipo de função que é, neste caso ou private ou public sendo que a grande diferença entre elas é que conforme o nome diz, uma função privada, que não pode ser acedida fora do seu contexto ou do seu componente o que pelo contrario a função public permite o seu acesso fora desse contexto / componente, estando disponível em toda a aplicação.
No caso desta função, e de muitas outras, por uma questão de reutilização de código podemos simplificar as coisas e passar um ou mais parâmetros para a função. Isto torna-se muito util no caso de querer-mos fazer uma operação com um valor diferente, usando a função em cima e o que já foi explicado poderíamos fazer a função:
private function mostraMsg(msg:String):void {
trace(msg);
}
//e chama-la como:
mostraMsg("olá");
Esta operação apenas fará o mesmo que a anterior, mas de uma maneira reutilizável… podemos ainda tomar como por exemplo o que já foi dito em cima, para criarmos a nossa primeira função conjugando quase tudo o que foi dito em cima:
var dados:Array = ["olá","mundo","sou","um","teste"];
private function mostraMsg(msg:String):void {
trace(msg);
}
private function teste ():void {
for (var i:Number = 0; i < dados.length; i++) {
mostraMsg(dados[i]);
}
}
teste();
Ao executar-mos esta função teste(), será executado um ciclo de i=o até i=4 (o dados.length retorna o tamanho do array) e em cada posição será chamada a função mostraMsg com a string da posição do array, ou seja, a função mostraMsg será chamada 5 vezes:
mostraMsg("olá");
mostraMsg("mundo");
mostraMsg("sou");
mostraMsg("um");
mostraMsg("teste");
o que produzirá um trace a estes cinco elementos do array.
As funções em si podem devolver dados… no caso em cima não devolvemos nada (:void), mas podemos devolver praticamente qualquer tipo de dados, ora vejamos:
private function percentagem(num:Number):Number {
return ((num/100));
}
Neste caso ao chamar-mos a função percentagem, ser-nos-à devolvido o valor percentual do número que indicámos:
var perc:Number;
perc=percentagem(25);
/* ao colocarmos a variavel perc=percentagem(25), a variável será igual
ao valor devolvido pela funçao, e como ao chamar a funcao colocámos
o numero 25, a variavel perc ficara com o vamor de 0.25, sendo que a operação
dentro da função será (25/100) = 0,25. */
Como podem reparar trabalhar com funções não é muito dificil, temos apenas que ter em conta que quanto mais simples, limpas e directas forem, mais fácil será detectar erros e reutiliza-las. Repararam também que usei os caracteres "/*" para definir um bloco de comentário, estes caracteres são iguais como aos conhecidos por muitas outras linguagens de programação como Javascript, VisualBasic, php, etc..
Um "//" define uma linha de comentário
Um "/*" define um bloco de comentário, pelo que devemos usar o "*/" para dar como terminado esse bloco.
Um /** para definir um bloco de comentário (FLEX), consiso, rápido e importante, já que é assinalado a outra cor (No FLEX, azul marinho) para mais facil identificação, devendo também termina-lo com **/.
Por agora é tudo…
Abraço.




9 Comentários
Ae mario precisando de ajuda, é soh fala
você é o cara… estou adorando aprender Action Script 3 com seus tutoriais… são super simples e objetivos.
Não é complicado como o help do flash CS3 que mata agonizando os iniciantes sufocando em dúvidas.
MUITO OBRIGADO POR VOCÊ EXISTIR…
Oupa Felipe, ainda bem que os tutoriais estão ajudando… já têm aí até ao n.11
Está faltando é tempo pra continuar…
Abraço.
cara vc eh cara!muito facil de aprender to aprendendo msm com esse tutorial}!
E X E L E N T E – E X E L E N T E – E X E L E N T E – E X E L E N T E
continua por favor!
É a gota dágua que me faltava..
Parabéns
Kra vlew mesm muito show seu tuto
Bixo, massa a sua colocação a respeito do Arra(). Tem uma parte que vc fala em romover um item de um array.
Estou com um projeto e necessito remover uma posição do array caso essa esteja vazia. Alguma solução, não sei como utilizar o splice().
grato.
conhece o mário?
HEy Mario, ta excelente meu, só peca pela falta de um link para navegar entre os tutoriais anteriores e posteriores…