ActionScript/Classes
Sobre Classes
[editar | editar código-fonte]Classe é o fundamento da programação orientada a objetos. Elas oferecem um modo simples e organizado para organizar métodos e atributos. Podemos dizer que, sem classes, não há OOP. Se você nunca trabalhou com classes, é interessante aprender, pois sem classes não há como programar efetivamente em AS 3.0, pois esta é toda OO.
As classes no ActionScript 3.0 devem sempre estar inseridas dentro de pacotes (package
). Veja o exemplo a seguir:
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
public function Main() {
trace("Olá!");
}
}
}
Iniciamos escrevendo a palavra package
(pacote) dentro do arquivo que será salvo com a extensão .as (todo arquivo ActionScript tem que ter esta extensão). O pacote pode ter um nome (package teste
, por exemplo), mas não é obrigatório.
A próxima linha (import flash.display.MovieClip
) se refere a todos os pacotes que deveram ser importados que serão usados na compilação do nosso pacote.
Já public class Main extends MovieClip
explicita que a classe é pública (public class
), ou seja, está aberta para uso em outras partes do projeto.
A frase extends MovieClip
faz com que todos os métodos e atributos do pacote MovieClip seja utilizador pela nossa classe "Main". Isso se chama herança, e veremos mais sobre isso mais para frente.
E public function Main()
é o método construtor da classe. Será a função invocada (no caso, executará a função trace()
) quando a classe é instanciada. Para instanciar, ou seja, passar os métodos e atributos para uma instância, basta fazer isto:
var main:Main = new Main();
Agora, a variável main
tem os atributos e métodos da classe Main
, se tornando uma instância de Main
.
Caminhos de classes
[editar | editar código-fonte]Você pode querer organizar os caminhos de classes em pastas para facilitar o seu projeto. Isso é possível descriminando na parte de import
o local onde está o arquivo .as externo. Por exemplo: se você tem uma classe que gostaria de usar na pasta minhapasta, você deveria acrescentar a ao arquivo que importará esta linha import minhapasta.MinhaClasse;
. E no pacote a ser importado, ele deverá ter como caminho package minhapasta
. Se você preferir importar tudo do pacote, você pode importar como import minhapasta.*;
.
Exemplo:
Arquivo Mamifero.as localizado na pasta tipo (C:/tipo/Mamifero.as):
package tipo{
import flash.display.MovieClip;
import flash.events.Event;
public class Mamifero extends MovieClip {
private var _nome:String;
private var _idade:Number;
public function Mamifero(nm:String, id:Number){
_nome = nm;
_idade = id;
}
public function exibeDados(){
trace("Nome: " + _nome + "\nIdade: " + _idade);
}
}
}
Arquivo Homem.as que importará Mamifero.as (C:/Homem.as):
package {
import flash.display.MovieClip;
import flash.events.Event;
import tipo.Mamifero;
public class Homem extends Mamifero {
public var olhos:String;
public function Homem(nm:String, id:Number){
trace(nm);
}
}
}
Atributos de propriedades de classes
[editar | editar código-fonte]Tipo | Descrição |
---|---|
internal (padrão) | Visível para referências dentro do mesmo pacote. |
private | Visível para referências na mesma classe. |
protected | Visível para referências na mesma classe e em classes derivadas. |
public | Visível para referências em todos os lugares. |
static | Especifica que uma propriedade pertence à classe, ao contrário das ocorrências da classe. |
UserDefinedNamespace | Nome do espaço para nomes personalizado definido pelo usuário. |
Para uma explicação mais abrangente sobre atributos de classe veja neste link da documentação oficial da Adobe.