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 (<codesource lang=actionscript3 enclose=none>package</codesource>). Veja o exemplo a seguir:
<source lang=actionscript3>
package {
<code style="font-size:10pt">
:<span style="color:#F90"> import </span>flash.display.MovieClip; ▼
<span style="color:#F90">package</span> {
public class Main extends MovieClip {
▲:<span style="color:#F90">import </span>flash.display.MovieClip;
public function Main() {
::<span style="color:#F90">public class</span> <span style="color: #06F">Main</span> <span style="color:#F90">extends </span> MovieClip {
trace("Olá!");
:::<span style="color:#F90">public function</span> <span style="color: #06F">Main</span>() {
}
::::trace(<span style="color:#090">"Olá!"</span>);
}
:::}
:}
}
</codesource>
Iniciamos escrevendo a palavra <code>package</code> (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 (<code>package teste</code>, por exemplo), mas não é obrigatório. ▼
▲Iniciamos escrevendo a palavra < codesource lang=actionscript3 enclose=none>package</ codesource> (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 (< codesource lang=actionscript3 enclose=none>package teste</ codesource>, por exemplo), mas não é obrigatório.
A próxima linha (<span style="color:#F90">import </span>flash.display.MovieClip) se refere a todos os pacotes que deveram ser importados que serão usados na compilação do nosso pacote. ▼
▲A próxima linha (< spansource stylelang= "color:#F90"actionscript3 enclose=none>import </span>flash.display.MovieClip </source>) se refere a todos os pacotes que deveram ser importados que serão usados na compilação do nosso pacote.
Já <span style="color:#F90">public class</span> <span style="color: #06F">Main</span> <span style="color:#F90">extends </span> MovieClip explicita que a classe é pública (namespace <code>public class</code>), ou seja, está aberta para uso em outras partes do projeto. ▼
▲Já < spansource stylelang= "color:#F90"actionscript3 enclose=none>public class </span> <span style="color: #06F">Main </span> <span style="color:#F90">extends MovieClip</ spansource> MovieClip explicita que a classe é pública ( namespace<source <codelang=actionscript3 enclose=none>public class</ codesource>), ou seja, está aberta para uso em outras partes do projeto.
A frase <code>extends MovieClip</code> 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. ▼
▲A frase < codesource lang=actionscript3 enclose=none>extends MovieClip</ codesource> 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 <span style="color:#F90">public function</span> <span style="color: #06F">Main</span>() é o método construtor da classe. Será a função invocada (no caso, executará a função <code>trace()</code>) quando a classe é instanciada. Para instanciar, ou seja, passar os métodos e atributos para uma instância, basta fazer isto: ▼
▲E < spansource stylelang= "color:#F90"actionscript3 enclose=none>public function </span> <span style="color: #06F">Main ()</ spansource> () é o método construtor da classe. Será a função invocada (no caso, executará a função < codesource lang=actionscript3 enclose=none>trace()</ codesource>) quando a classe é instanciada. Para instanciar, ou seja, passar os métodos e atributos para uma instância, basta fazer isto:
<code style="font-size:10pt"><span style="color:#F90">var</span> '''main''':'''Main''' = <span style="color:#F90">new</span> '''Main'''();</code>
<source lang=actionscript3>
var main:Main = new Main();
</source>
Agora, a variável <codesource lang=actionscript3 enclose=none>main</codesource> tem os atributos e métodos da classe <codesource lang=actionscript3 enclose=none>'''Main'''</codesource>, se tornando uma instância de <codesource lang=actionscript3 enclose=none>'''Main'''</codesource>.
== 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 <codesource lang=actionscript3 enclose=none>import</codesource> 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 <codesource stylelang="font-size:10pt"><spanactionscript3 styleenclose="color:#F60"none>import</span> minhapasta.MinhaClasse;</codesource>. E no pacote a ser importado, ele deverá ter como caminho <codesource stylelang="font-size:10pt"><spanactionscript3 styleenclose="color:#F60"none>package</span> minhapasta</codesource>. Se você preferir importar tudo do pacote, você pode importar como <codesource stylelang="font-size:10pt"><spanactionscript3 styleenclose="color:#F60"none>import</span> minhapasta.*;</codesource>.
Exemplo:
Arquivo ''Mamifero.as'' localizado na pasta ''tipo'' (C:/tipo/Mamifero.as):
<source lang=actionscript3>
<code style='font-size:10pt'>
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);
::}
}
:}
}
}
</codesource>
Arquivo ''Homem.as'' que importará ''Mamifero.as'' (C:/Homem.as):
<source lang=actionscript3>
<code style='font-size:10pt'>
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);
}
::}
}
:}
}
</source>
</code>
[[Categoria:ActionScript|{{SUBPAGENAME}}]]
|