Sobre Classes

editar

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.

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

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

Ver também

editar