ActionScript/Classes: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Franprarod (discussão | contribs)
corrigindo o indexador da categoria; facilitando a formatação do código-fonte por meio da extensão <source lang=actionscript3></source>
Linha 2:
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}}]]