ActionScript/Classes
Índice |
[editar] Sobre Classes
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.
[editar] Caminhos de classes
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); } } }
[editar] Atributos de propriedades de classes
| 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.