Curso AS3

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.

7 Responses to “Entendendo Funções”

  1. huayna Says:

    muito legal
    =]

  2. Wolney Says:

    :o
    aprendi mais um pouquinho sobre funções
    obrigado

  3. samuel Says:

    ótimo ! :o

  4. Mateus Says:

    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?

  5. Rubia Says:

    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!!!

  6. Fernando Bernardes Says:

    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

  7. Fernando Paiva Says:

    Sensacional o post meu camarada! Agora é estudar mais por aqui hahaha
    abração!

Leave a Reply