Entendendo Funções
O entendimento de funções é extremamente importante no Actionscript. Você já se viu copiando e colando partes do código, ou o reescrevendo. Graças às funções, podemos reutilizar blocos de códigos em qualquer parte do filme, desta forma, pode-se obter mais escrevendo menos.
A sintaxe de uma função é a seguinte:
function nome-da-função(parâmetro1:Tipo, parâmetro2:Tipo){ //comandos; };
A declaração da função é feita através da palavra-chave function, logo em seguida o nome da função, e entre os parênteses pode-se adicionar quantos parâmetros forem necessários, ou deixá-lo em branco, o uso de parâmetros é usado para chamar a função e executá-la com algumas diferenças, e por fim entre as chaves ficam os comandos.
A sintaxe abaixo é uma outra forma de se criar uma função. A única diferença está na forma em que o nome é atribuído a função.
nome-da-função = function (parâmetro1:Tipo, parâmetro2:Tipo){ //comandos; };
A função é chamada da seguinte maneira:
//sem parâmetros nome-da-função(); //com parâmetros nome-da-função(parâmetro1, parâmetro2);
Exemplos
Simples
function mensagem(nome:String){ trace("Olá!"); } mensagem();
Passando um parâmetro
function mensagem(nome:String){ trace("Olá " + nome + "!"); } mensagem("Erick"); mensagem("Lola");
Passando diversos parâmetros
function mensagem(nome:String, eu:String){ trace("Olá " + nome + " !\nMe chamo" + eu); } mensagem("Erick", "João"); mensagem("João", "Erick");
Chamando uma função
Suponha que você tenha definido uma função de nome “somar” dentro de um movieClip instanciado de “mc1″, no stage principal, e quer chamá-lo na Timeline principal, para isto é necessário passar o caminho completo.
_root.mc1.somar();
Se o nome da função for passado através de variáveis, fica da seguinte maneira:
var varNomeFuncao:String = somar; _root.mc1[varNomeFuncao]();
Podemos ainda definir a função como global, e desta forma é possível chamá-lo em qualquer Timeline e escopo sem a necessidade de utilizar um caminho a cada chamada.
_global.somar = function(){ //comandos; }; somar();
Variáveis em funções
Ao criar uma função, dentro desta função existe um escopo, e ao declarar uma função como local através da palavra-chave var, está variável estará disponível apenas dentro da função, ou seja, no escopo da função.
function somar():Void{ var n1:Number = 2; var n2:Number = 3; }; somar(); trace(n1 + n2); //retornará um erro function somar():Void{ var n1:Number = 2; var n2:Number = 3; trace(n1 + n2); //retornará 5 }; somar(); function somar():Void{ n1 = 2; n2 = 3; }; somar(); trace(n1 + n2); //retornará 5
É recomendado declarar as variáveis como locais, pois em grandes aplicativos, será mais difícil ocorrer um erro, como o de definir duas variáveis com o mesmo nome, sendo que cada uma terá seu escopo.
Trabalhando com retorno de dados na função chamada
Podemos também utilizar as próprias funções para retornarem resultados, a instrução return é usada para está finalidade.
O uso de return é exigido em função onde foi especificado um tipo de retorno, caso contrário o uso do return é opcional.
//retorna um valor booleano function somar():Boolean{ //comandos; }; //retorna um valor numérico function somar():Number{ //comandos; };
Exemplo
function verificarSecao(secao:String):Boolean{ var retorno:Boolean; if(secao == "Flash") retorno = true; else retorno = false; return(retorno); }; var secaoCorreta:Boolean = verificarSecao("Flash"); trace(secaoCorreta); var secaoCorreta:Boolean = verificarSecao("Flex"); trace(secaoCorreta);
O operador Void indica que a função não retorna valor algum.
function nomeFuncao():Void{ //comandos; };
Global Functions
Após compreender melhor o funcionamento e de como criar suas próprias funções, ainda contamos com muitas das funções globais do Flash, como:
- duplicateMovieClip()
- getURL()
- getTimer()
- gotoAndStop()
- loadMovie()
- play()
- etc.

September 5th, 2006 at 13:44
muito legal
=]
September 27th, 2006 at 8:50
aprendi mais um pouquinho sobre funções
obrigado
November 18th, 2006 at 18:15
ótimo !
March 29th, 2007 at 21:30
Gostaria de saber como passo por parametro um nome de um obj para tratar o obj.
como por exemplo em javascript faco
function teste(objeto){
var obj = document.getElementById(objeto);
obj.text = “Muda texto”;
}
e em actionscript no flex 2 como faço?
June 26th, 2007 at 11:44
Eu tive q aprender td isso na marra, no desespero do dia-a-dia…
Agora que vi esse artigo me lembrei de quanto sofri por não entender como a “função funcionava” exatamente…
Mas é isso, é a vida de programador mesmo!!!
Ótimo artigo!!!
July 10th, 2007 at 17:01
Ninguem conseguiu me ajudar com isso até agora… essa função nao retorna nada !!! acho q tem a ver com
…
meuXML.onLoad = function () {
…
Se alguém aí entender q locura é essa… por favor me ajude…
function conectaXML(arquivo:Number) {
var meuXML:XML = new XML();
meuXML.load(arquivo+”.xml”);
meuXML.ignoreWhite = true;
meuXML.onLoad = function() {
var xmlNodes:Array = this.firstChild.childNodes;
for (var i = 0, len:Number = xmlNodes.length; i
October 7th, 2007 at 10:37
Sensacional o post meu camarada! Agora é estudar mais por aqui hahaha
abração!