<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TSW - That Should Work Blog &#187; iniciação</title>
	<atom:link href="http://blog.msdevstudio.net/tag/iniciacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.msdevstudio.net</link>
	<description>Flash, Flex, Web e Aplicações Ricas para Internet!</description>
	<lastBuildDate>Tue, 07 Feb 2012 18:30:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Tutorial Action Script 3 &#8211; 012</title>
		<link>http://blog.msdevstudio.net/2009/12/01/tutorial-action-script-3-012/</link>
		<comments>http://blog.msdevstudio.net/2009/12/01/tutorial-action-script-3-012/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 10:31:14 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Serie Tutoriais AS3]]></category>
		<category><![CDATA[tutorial AS3]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[código fonte]]></category>
		<category><![CDATA[exemplo]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[iniciação]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=1174</guid>
		<description><![CDATA[Bom, chegou a hora de que bastantes dos meus leitores esperaram&#8230; a continuação da minha serie de tutoriais sobre o AS3. Para aqueles que não acompanharam as primeiras 11 partes e para os que pretendem relembrar um pouco do que foi falado, segue uma categoria especifica aqui do blog com apenas esses tutoriais, exclusivamente dedicada [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Bom, chegou a hora de que bastantes dos meus leitores esperaram&#8230; a continuação da minha serie de tutoriais sobre o AS3. Para aqueles que não acompanharam as primeiras 11 partes e para os que pretendem relembrar um pouco do que foi falado, segue uma categoria especifica aqui do blog com apenas esses tutoriais, exclusivamente dedicada à iniciação do Action Script 3. <a href="http://msdevstudio.com/blog/category/serie-tutoriais-as3/" target="_blank">Aqui está o link</a> onde podem encontrar todos os tutoriais.</p>
<p style="text-align: justify;">Para os mais atentos foi lançada a compilação de todos estes tutoriais à um tempo atrás, basta procurarem no blog, que teve algum sucesso o que me levou a escrever uma segunda parte apenas em pdf que distribui inicialmente consoante uma doação, e que mais tarde também foi distribuída num pequeno &#8220;giveaway&#8221; e que agora finalmente será distribuída publicamente para o publico. Esta segunda parte do tutorial será dividida em vários post&#8217;s durante algumas semanas, e no final será colocado o pdf para download&#8230; se necessita urgentemente desta segunda parte (conta com 60 novas paginas) então entre em contacto comigo no twitter ou por email justificando essa necessidade que talvez sejam dos primeiros a receber esta segunda parte gratuitamente, embora haja alguns desses contactos que possam não ter resposta não desesperem&#8230; vai ser rápido para estar completamente publicado.</p>
<p style="text-align: justify;">Este tutorial foca o Action Script 3 Orientado para o Flex, mas na sua base a estrutura é exactamente a mesma para o flash, por isso será com certeza útil também para os amantes do flash.</p>
<p style="text-align: justify;"><em><strong>Nota:</strong></em> Não sendo um profissional, as técnicas adoptadas podem não ser as mais correctas, podendo mesmo existir alguns erros, mas bom&#8230; se detectarem algo &#8220;anormal&#8221; me informem.</p>
<p style="text-align: justify;">Bom, vamos então à parte 12.</p>
<p style="text-align: justify;">Não utilizem o sistema de comentários em baixo para tirar duvidas, elas não serão respondidas aqui! Usem antes o fórum do blog disponivel em: <a href="http://forum.msdevstudio.com" target="_blank">http://forum.msdevstudio.com</a></p>
<p style="text-align: justify;">Continuando&#8230; Falaremos agora de (notem que os pontos podem nao estar seguidos, a versão final sofreu pequenas alterações):</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<blockquote>
<p style="text-align: justify;"><strong>5.3. Relacionamento entre classes.</strong></p>
</blockquote>
<p style="text-align: justify;">Neste momento a nossa class passa a pertencer ao grupo de classes pessoais que podemos adicionar ao nosso projecto.<br />
Um dos pontos muito úteis é o reaproveitamento do código para as mais variadas coisas, e de entre as quais podemos usar um relacionamento entre varias classes pessoais.</p>
<p style="text-align: justify;">Um exemplo pode ser a definição de certas constantes numa class. Vamos supor que necessitamos de ter definidos tamanhos e um titulo para vários painéis feitos pela class em cima, poderemos efectuar 2 tipos de classes para este efeito, embora para este tipo de definições possamos usar uma class sem &#8220;inicializador&#8221; (apenas servirá para definir constantes / variáveis)<br />
[coolcode lang="actionscript"]<br />
package teste<br />
{<br />
public class def<br />
{<br />
public const PANEL_W:int = 400;<br />
public const PANEL_H:int = 300;<br />
public const PANEL_TITLE:String = &#8220;Painel personalizado&#8221;;<br />
}<br />
}<br />
[/coolcode]<br />
Esta class  não necessita de ser inicializada porque apenas apresenta parâmetros fixos da nossa aplicação e não têm um constructor.</p>
<p style="text-align: justify;"><span id="more-1174"></span>Na nossa class em cima vamos colocar em prática o uso desta nossa class, editando a class teste.as e fazendo o seguinte.<br />
No topo a seguir aos imports coloquem:<br />
[coolcode lang="actionscript"]<br />
import teste.def;<br />
[/coolcode]<br />
e na nossa função criado() substituimos a linha:<br />
[coolcode lang="actionscript"]<br />
_nomePessoal=&#8221;Teste Painel &#8220;+Math.floor(Math.random()*15);<br />
[/coolcode]<br />
por<br />
[coolcode lang="actionscript"]<br />
_nomePessoal=def.PANEL_TITLE+Math.floor(Math.random()*15);<br />
[/coolcode]<br />
Neste momento o titulo de cada painel criado será iniciado pela definição colocada na class def:<br />
[coolcode lang="actionscript"]<br />
public const PANEL_TITLE:String = &#8220;Painel personalizado&#8221;;<br />
[/coolcode]<br />
vamos também definir o tamanho fixo do nosso painel da class, trocando na função teste() o seguinte:<br />
[coolcode lang="actionscript"]<br />
//definimos o painel<br />
this .width=270;<br />
this .height=270;<br />
[/coolcode]<br />
por<br />
[coolcode lang="actionscript"]<br />
this .width=def.PANEL_W;<br />
this .height=def.PANEL_H;</p>
<p style="text-align: justify;">[/coolcode]</p>
<p style="text-align: justify;">Desta forma, todos os paineis criados pela nossa class teste terão sempre as definições :<br />
[coolcode lang="actionscript"]<br />
public  const PANEL_W:int = 400;<br />
public  const PANEL_H:int = 300;<br />
public  const PANEL_TITLE:String = &#8220;Painel personalizado&#8221;;<br />
[/coolcode]<br />
Este tipo de definições são muito úteis quando há necessidade de ter sempre constantes na nossa aplicação, por exemplo num caso de uma aplicação que se liga a um banco de dados, podemos guardar o host e informações de login.. neste caso, apenas com um problema. Estas constantes apenas podem ser lidas, visto que são constantes e apenas podem ser alteradas pelo criador da aplicação e compilando de novo a aplicação.</p>
<p style="text-align: justify;">Este trabalho poderia ser feito pela class seguinte:<br />
[coolcode lang="actionscript"]<br />
package  teste<br />
{<br />
public class definicoes<br />
{<br />
public const PANEL_W:int = 400;<br />
public const PANEL_H:int = 300;<br />
public const PANEL_TITLE:String = &#8220;Painel personalizado&#8221;;</p>
<p style="text-align: justify;">public function definicoes()<br />
{</p>
<p style="text-align: justify;">//constructor</p>
<p style="text-align: justify;">}</p>
<p style="text-align: justify;">}<br />
}<br />
[/coolcode]<br />
Mas neste caso teríamos algum código inválido, ou seja, o definicoes() ira ser inicializado em vão.. não temos necessidade de o ter no código (embora o possamos ter)</p>
<p style="text-align: justify;">O action Script 3 é tão versátil que nos permite inclusive extender uma class já feita para trabalhar com outros exemplos, vejam o exemplo seguinte que estende a nossa class de definições.<br />
[coolcode lang="actionscript"]<br />
package  teste<br />
{<br />
public class fullDef extends def<br />
{<br />
public const PANEL_DATE:String = &#8220;20/09/2008&#8243;;</p>
<p style="text-align: justify;">public function fullDef()<br />
{</p>
<p style="text-align: justify;">}</p>
<p style="text-align: justify;">}<br />
}<br />
[/coolcode]<br />
Este método cria uma nova class fullDef que estende a nossa class def, por palavras mais simples esta class usa as definições da class def em si própria, ou seja, herda (hereditária) as variáveis da class que está a ser estendida:<br />
[coolcode lang="actionscript"]<br />
public  const PANEL_W:int = 400;<br />
public  const PANEL_H:int = 300;<br />
public  const PANEL_TITLE:String = &#8220;Painel personalizado&#8221;;</p>
<p style="text-align: justify;">[/coolcode]</p>
<p style="text-align: justify;">e trata-as como se fossem suas, ou seja estas mesmas variáveis estarão disponíveis na class fullDef, basta testarem da seguinte forma:<br />
[coolcode lang="actionscript"]<br />
var  fid:fullDef = new fullDef;<br />
[/coolcode]</p>
<p style="text-align: justify;">e a partir deste momento as constantes da nossa class def de definições estarão também disponíveis nesta nossa class, juntamente com a constante PANEL_DATE que adicionei em cima, pela seguinte forma:<br />
[coolcode lang="actionscript"]<br />
fid.PANEL_DATE;<br />
fid.PANEL_H;<br />
fid.PANEL_TITLE;<br />
fid.PANEL_DATE;<br />
[/coolcode]<br />
De notar que uma constante não pode ser alterada depois do nosso código ter sido compilado num ficheiro .swf.</p>
<p style="text-align: justify;">Para esse efeito usamos apenas private var, e se o formos fazer usando a  nossa class de definições e a class fullDef deveremos usar o método [Bindable] já explicado anteriormente e que vai permitir que todas as classes que utilizem a nossa class def sejam actualizados com novos valores.</p>
<p style="text-align: justify;">Esta extensão funciona com variáveis, constantes, e funções quer das nossas classes pessoais ou das classes do Flex / Flash.</p>
<p style="text-align: justify;">Bom, por agora é tudo&#8230; até uma próxima&#8230;</p>
<p style="text-align: justify;">Sugestões? criticas? e porque não elogios? deixe um comentário&#8230;</p>
<p style="text-align: justify;">Duvidas? Use o<a href="http://forum.msdevstudio.com" target="_blank"> fórum.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/12/01/tutorial-action-script-3-012/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tutorial Classes AS3; Estrutura e compreensão!</title>
		<link>http://blog.msdevstudio.net/2008/10/30/tutorial-classes-as3-estrutura-e-compreensao/</link>
		<comments>http://blog.msdevstudio.net/2008/10/30/tutorial-classes-as3-estrutura-e-compreensao/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 12:33:02 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[tutorial AS3]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[artigo]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[iniciação]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=681</guid>
		<description><![CDATA[Tenho visto por variados sitios alguns pontos interessantes que falam do AS3, mas muito poucos aborda a estrutura base de uma class e os seus tipos de elementos e funções&#8230; ora, andei pelos meus feed&#8217;s e favoritos à procura de alguns artigos que falassem disso, e como de esperar são muito poucos, por isso aqui [...]]]></description>
			<content:encoded><![CDATA[<p>Tenho visto por variados sitios alguns pontos interessantes que falam do AS3, mas muito poucos aborda a estrutura base de uma class e os seus tipos de elementos e funções&#8230; ora, andei pelos meus feed&#8217;s e favoritos à procura de alguns artigos que falassem disso, e como de esperar são muito poucos, por isso aqui vai&#8230; um tutorial de como entender e construir as classes em as3.</p>
<p>Começando&#8230;</p>
<p><span id="more-681"></span></p>
<p>Com o Flash player 10 e o Flash CS4 disponivel, bem como o aproximar do lançamento do Flex 4 e thermo (esperemos) o Action Script 3 está a ficar na moda, e cada vez vejo mais pessoas à procura de informações sobre como se iniciarem no AS3.</p>
<p>A grande base para entender o AS3 é a compreensão de linguagem orientada a objectos que utiliza uma estrutura de código optimizada baseada em funções que são executadas por &#8220;pedido&#8221; a esse código e pela devida hierarquia e que asseguram o melhor desempenho da aplicação / animação. A grande vantagem do AS3 é permitir separar muito do código em pequenos arquivos que ao serem compilados ficam disponiveis na aplicação como parte conjunta.</p>
<p>Apesar de inevitavelmente trazer muitas vantagens, também pode ser um pouco complicado entender o AS3, mas vamos por passos;</p>
<p>A OOP, ou POO (Programação Orientada a Objectos), traz consigo uma robusta forma de desenvolver o código da nossa aplicação, que comporta muitos melhoramentos como:</p>
<ul>
<li>Estrutura de código, muito organizado e de facil compreensão.</li>
<li>Reutilização do código, o que permite além de reduzir os custos de programação acelera em muito o desenvolvimento de aplicações devido à extensibilidade do código.</li>
<li>A robustez e velocidade do código, que permite uma grande performance, com muito poucos erros que podem facilmente serem interceptados.</li>
<li>Grande vantagem de migrações de outras linguagens principalmente o Java que comporta muitas semelhanças devido à sua já utilização de OOP.</li>
</ul>
<p>A programação orientada a objectos basea-se na abstração do resto do código, e concentração apenas no &#8220;pedaço&#8221; de código/class que estamos a fazer, este peçado de código é considerado um objecto, que como qualquer elemento fisico tem caracteristicas, definições e propriedades&#8230; o mesmo se passa com estes objectos no AS3, vejam um exemplo:</p>
<p>Vida Real; Carro:</p>
<p>Caracteristicas: marca, modelo, ano</p>
<p>Funções: anda, trava, acelera, rodaVolante, acendeLuz, apagaLuz</p>
<p>Passando isto para uma class em AS3:</p>
<p>Caracteristicas/Variaveis: carro.marca , carro.modelo, carro.ano</p>
<p>Funções: carro.anda(); carro.trava(), carro.acelera(), carro.rodaVolante(), carro.acendeLuz(), carro.apagaLuz()</p>
<p>Isto para quem leu os meus tutoriais de AS3 já não é estranho, embora agora vá abordar o assunto de uma maneira diferente, explicando um pouco mais as classes.</p>
<p>Quando falamos de classes, temos que ter em especial atenção alguns pontos, principalmente porque são as bases da linguagem orientada a objectos, termos já presentes em muitas linguagens de programação como java ou php.</p>
<p>Dum modo geral, ao programar AS3 devemos ter em conta:</p>
<ul>
<li>Definição / escrita de classes</li>
<li>Criação de Propriedades, métodos e definições de acesso e conteudo</li>
<li>Controlo de acesso às classes, propriedades, métodos e definições / variaveis</li>
<li>Criação de popriedades e métodos estáticos</li>
<li>Definição e utilização de interfaces</li>
<li>Utilização de métodos hereditários bem como a re-escrita de elementos das classes</li>
</ul>
<p>Resumindo ao básico, uma classe engloba todas as propriedades de um objecto (podendo o objecto ser a sua propria class) bem como as suas definições e comportamentos. As classes no AS3 são compostas num arquivo de extensão .as e são consideradas como dados / objectos e podem ser declaradas como tal como se fossemos usar um outro tipo de objectos.</p>
<p>Uma class pode fazer parte de um &#8220;pacote/grupo&#8221; chamado &#8220;package&#8221; que pretende com que o código seja mais facilmente organizado para o programador e especialmente util na programação em grupo.</p>
<p>Vejam um exemplo, temos um carro e uma moto, como são ambos veiculos, podemos engloba-los no mesmo pacote, mas depois temos algumas diferenças, um têm 4 rodas, volante, 5 lugares e por outro lado temos a mota com 2 rodas, 2 lugares, guiador&#8230; nestas diferenças, para organizarmos ainda mais o código dentro do package &#8220;veiculos&#8221; podemos separar por:</p>
<p>Veiculos 2 Rodas</p>
<p>Veiculos 4 Rodas</p>
<p>Sendo que o nosso package estará distribuido como:</p>
<p>Veiculos-&gt;2 Rodas-&gt;Moto</p>
<p>Veiculos-&gt;4 Rodas-&gt;Carro</p>
<p>Se tivermos mais um bicicleta, fariamos:</p>
<p>Veiculos-&gt;2 Rodas-&gt;Bicicleta</p>
<p>Sendo que os nossos packages seriam: veiculos.duasRodas e veiculos.quatroRodas e as nossas classes Moto.as, Carro.as e Bicicleta.as.</p>
<p>Para criação dos packages destas classes, usariamos:</p>
<p><coolcode lang="actionscript" linenum="off"><br />
package veiculos.duasRodas {</p>
<p>}<br />
</coolcode><br />
e<br />
<coolcode lang="actionscript" linenum="off"><br />
package veiculos.quartoRodas {</p>
<p>}<br />
</coolcode></p>
<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/10/class1.jpg"><img class="size-full wp-image-706 alignright" title="Project Structure" src="http://msdevstudio.com/blog/wp-content/uploads/2008/10/class1.jpg" alt="" width="145" height="92" /></a>Sendo que obrigatóriamente o  veiculos.quatroRodas representa a estrutura de pastas a partir da nossa pasta Source, raiz do projecto, vejam o exemplo do projecto em Flex da imagem ao lado, como podem ver, a pasta src é a pasta source do meu projecto, e é a partir desta que é feita a estrutura de pastas para definir o nosso package.</p>
<p><img class="alignright size-full wp-image-707" title="class2" src="http://msdevstudio.com/blog/wp-content/uploads/2008/10/class2.jpg" alt="" width="167" height="201" /></p>
<p>De seguida vou criar as pastas src/veiculos/duasRodas e src/veiculos/quartoRodas que vão organizar e identificar claramente as minhas classes. Pode ver também já os ficheiros (classes) Moto.as, Bicicleta.as e Carro.as devidamente criados e colocados nas suas devidas pastas. Assim se forma a estrutura do nosso package e suas devidas classes.</p>
<p>Esta é obrigatóriamente a estrutura de packages em AS3, sendo que uma class não têm obrigatóriamente de ser incluida num package, mas em projectos de media/grande dimensão é altamente aconselhavel a seguir este tipo de organização. O nome das classes devem sempre ser iniciados por letra maiuscula.</p>
<p>Vejamos o exemplo da class Moto:<br />
<coolcode lang="actionscript" linenum="off"><br />
package veiculos.duasRodas<br />
{<br />
   public class Moto<br />
   {<br />
       public function Moto()<br />
        {<br />
         }<br />
    }<br />
}<br />
</coolcode><br />
Iniciamos com o package, definimos a nossa class como public para que possa ser instanciada (para que possa ser atribuida e utilizada como uma variavel) e definimos a função principal da nossa class como public também.</p>
<p>Esta é a estrutura base, sendo que podem ser usados diferentes tipos de declarações para a nossa class e funções, tais como:</p>
<ul>
<li>public &#8211; Declara a visibilidade maxima, publica, que é visivel por todos os elementos da nossa applicação.</li>
<li>internal &#8211; Visivel unicamente dentro do nosso package, apenas possivel de utilização interna.</li>
<li>final &#8211; Class final, impossivel de ser extendida por outra class.</li>
<li>dynamic &#8211; Class dinamica, possivel de ser alterada com dados durante a execução da aplicação adicionando propriedades à mesma.</li>
</ul>
<p>As declarações final e dynamica devem ser usadas como sub elementos na declaração da class, como:</p>
<ul>
<li>public final class Moto</li>
<li>internal dynamic class Moto</li>
<li>public dynamic class Moto</li>
</ul>
<p>Depois de uma class elaborada, ela não fica automaticamente disponivel na nossa aplicação, quando a desejar-mos usar devemos indicar à aplicação que ela deve ser incluida, para isso usamos o import, indicando o seu caminho a partir da pasta raiz do projecto:</p>
<p><coolcode lang="actionscript" linenum="off"><br />
import veiculos.duasRodas.Moto;<br />
</coolcode><br />
E deve de seguida ser instanciada, usando a palavra new:</p>
<p><coolcode lang="actionscript" linenum="off"><br />
private var cbr:Moto = new Moto();<br />
</coolcode></p>
<p>A partir deste momento a nossa class encontra-se instanciada na variavel cbr e pode ser usada na nossa aplicação.</p>
<p>As nossas classes podem conter atributos, ou propriedades que podem igualmente ser indicadas como variavies, podendo seguir o seguinte código:</p>
<p><coolcode lang="actionscript" linenum="off"><br />
package veiculos.duasRodas<br />
{<br />
   public class Moto<br />
   {<br />
      public var modelo:String;<br />
      public var marca:String;<br />
      public var cor:uint;</p>
<p>      private var velocidadeActual:uint=0;</p>
<p>       public function Moto()<br />
        {<br />
        }<br />
}<br />
}<br />
</coolcode><br />
onde foram declaradas as variaveis/propriedades modelo, marca, cor onde estão acessiveis a toda a aplicação, desde que a class tenha sido instanciada, estas declarações podem ser de alguns tipos:</p>
<ul>
<li>public &#8211; Passivel de ser acedida e definda ao longo de toda a aplicação e instancias</li>
<li>private &#8211; Apenas para uso da nossa class, não acessivel fora da mesma nem em sub-classes</li>
<li>protected &#8211; Acessivel para uso da nossa class, mas também nas sub-classes</li>
<li>static &#8211; Acessivel para uso na class mas também na sua instancia.</li>
</ul>
<p>Depois da definição da class e suas propriedades podemos definir métodos, ou acções executaveis da nossa class, conhecidos como métodos, podem ser definidos como funções:<br />
<coolcode lang="actionscript" linenum="off"><br />
public function acelera(velInc:uint):void {<br />
   velocidadeActual+=velInc;<br />
}<br />
</coolcode><br />
onde definimos a função como public, que recebe o incremento de velocidade como argumento e que o incrementa na velocidadeActual. Estes métodos podem ser declarados como:</p>
<ul>
<li>public &#8211; Visivel em todo o código na instancia da class.</li>
<li>private &#8211; Visivel internamente na class mas não nas sub-classes.</li>
<li>protected &#8211; Visivel na class e sub-classes.</li>
<li>static &#8211; Apenas visivel na class, mas não nas instancias da mesma.</li>
</ul>
<p>Podem não ter reparado, mas na class que dei exemplo existe uma função com o mesmo nome da class:<br />
<coolcode lang="actionscript" linenum="off"><br />
package veiculos.duasRodas<br />
{<br />
   public dynamic class Moto<br />
   {<br />
     public var modelo:String;<br />
     public var marca:String;<br />
     public var cor:uint;<br />
     private var velocidadeActual:uint=0;</p>
<p>      public function Moto()<br />
      {<br />
       }</p>
<p>      public function acelera(velInc:uint):void {<br />
          velocidadeActual+=velInc;<br />
      }<br />
  }<br />
}<br />
</coolcode><br />
Esta função é chamada de constructor, e todo o conteudo desta função é imediatamente executado assim que a class é instanciada usando a palavra new, como em cima foi explicado. Este método é obrigatóriamente publico (public) e não pode ser declarada com qualquer um dos outros &#8220;controladores de acesso&#8221; como private, internal ou protected.</p>
<p>O constructor da class pode ser usado para definir valores / propriedades da mesma class assim que esta é instanciada, por exemplo:<br />
<coolcode lang="actionscript" linenum="off"><br />
public function Moto(modeloM:String, marcaM:String)<br />
{<br />
modelo=modeloM;<br />
marca=marcaM;<br />
}<br />
</coolcode><br />
onde os argumentos modeloM e marcaM devem ser indicados na instanciação:<br />
<coolcode lang="actionscript" linenum="off"><br />
var cbr:Moto=new Moto(&#8220;CBR&#8221;,&#8221;Honda&#8221;);<br />
</coolcode><br />
Estes argumentos podem ser opcionais, mas devemos para isso indicar um valor por defeito para eles:<br />
<coolcode lang="actionscript" linenum="off"><br />
public function Moto(modeloM:String=&#8221;R200&#8243;, marcaM:String=&#8221;Suzuki&#8221;)<br />
{<br />
modelo=modeloM;<br />
marca=marcaM;<br />
}<br />
</coolcode><br />
onde podemos na sua instanciação declarar ou não esses argumentos:<br />
<coolcode lang="actionscript" linenum="off"><br />
var cbr:Moto=new Moto(&#8220;CBR&#8221;,&#8221;Honda&#8221;);</p>
<p>var cbr:Moto=new Moto(&#8220;CBR&#8221;);</p>
<p>var cbr:Moto=new Moto();<br />
</coolcode><br />
Onde, na ausencia de atribuição de algum dos elementos (modeloM,marcaM) a função assumirá os valores pode defeito (modeloM=&#8221;R200&#8243; e marcaM=&#8221;Suzuki&#8221;).</p>
<p>Nas classes existem alguns pontos que podem ser muito importantes na sua estrutura, falo de acessores, tipicamente conhecidos como getter&#8217;s e setter&#8217;s que permitem definir internamente uma variavel não alteravel na sua instancia, tais como variaveis private.</p>
<p>Estes get&#8217;s e set&#8217;s permitem definir/aceder a uma variavel privada sem que tenhamos que definir uma função public para aceder aos mesmos. As variaveis sujeitas a este tipo de acessores devem ser iniciadas pelo caracter _ como mostra em baixo:<br />
<coolcode lang="actionscript" linenum="off"><br />
private var _velocidadeMax:uint;<br />
private var _rotacaoMax:uint;<br />
</coolcode><br />
Para definirmos os acessores, tratamo-los como funções mas com algumas caracteristicas, no caso dos get (busca):<br />
<coolcode lang="actionscript" linenum="off"><br />
public function get velocidadeMax():uint {<br />
return _velocidadeMax;<br />
}<br />
</coolcode><br />
onde definimos como public, usando a palavra get nomeDaVariavel e devolvendo o mesmo tipo de dados da mesma variavel. Devolvemos com o retun a variavel.</p>
<p>No caso dos set, para definir o valor de uma variavel, usamos:<br />
<coolcode lang="actionscript" linenum="off"><br />
public function set velocidadeMax(vel:uint):void {<br />
_velocidadeMax=vel;<br />
}<br />
</coolcode><br />
De notar que em ambos os casos a variavel na declaração da função é usada sem o caracter _.</p>
<p>Ao usarmos estes getter&#8217;s e setter&#8217;s (podemos usar os que quisermos e podemos apenas usar um deles dependendo se queremos apenas definir ou ler os dados dessa variavel) estamos a indicar que na instancia da class a variavel private pode ser lida e alterada:<br />
<coolcode lang="actionscript" linenum="off"><br />
private var cbr:Moto = new Moto(&#8220;CBR&#8221;,&#8221;Honda&#8221;);</p>
<p>cbr.velocidadeMax=240; //usando o set</p>
<p>var vel:uint = cbr.velocidadeMax; //usando o get<br />
</coolcode><br />
Outra forma de alterar estas variavei, poderia ser utilizando métodos/funções, mas desta forma na instancia serão disponibilizadas muito mais funções e que em class maiores pode confundir a baralhar a programação, vejam:<br />
<coolcode lang="actionscript" linenum="off"><br />
public function buscaVelocidadeMax():uint {<br />
return _velocidadeMax;<br />
}</p>
<p>public function  defineVelocidadeMax(vel:uint):void {<br />
_velocidadeMax=vel;<br />
}<br />
</coolcode><br />
mas desta feita teriamos que usar:</p>
<p><coolcode lang="actionscript" linenum="off"><br />
private var cbr:Moto = new Moto(&#8220;CBR&#8221;,&#8221;Honda&#8221;);</p>
<p>cbr.defineVelocidadeMax(240);</p>
<p>var vel:uint = cbr.buscaVelocidadeMax();<br />
</coolcode><br />
Podemos perceber algora alguns exemplos, como o que se segue que serve para enumeração, ou seja, permite definir um tipo de dados com um determinado valor, muito util para certas constantes de utilização e comparaçao na nossa aplicação, vejam:<br />
<coolcode lang="actionscript" linenum="off"><br />
public final class HondaCBR {</p>
<p>    public static const cilindros:uint=2;<br />
    public static const marca:String=&#8221;Honda&#8221;;<br />
    public static const modelo:String=&#8221;CBR&#8221;;</p>
<p>    public static const serie:String=&#8221;CBR-RX001-2006&#8243;;<br />
    public static const velMax:uint=280;<br />
}<br />
</coolcode><br />
Esta class apenas serve para defiir dados, como se trata de um função public final pode ser acedida por toda a aplicação, mas não pode ser extendida/alterada bem como as suas variavies constantes e inalteraveis durante a execução.</p>
<p>Vejam na nossa class original, poderiamos colocar esta class HondaCBR.as no nosso source e colocar:<br />
<coolcode lang="actionscript" linenum="off"></p>
<p>import HondaCBR;</p>
<p>public function Moto(modeloM:String=&#8221;R200&#8243;, marcaM:String=&#8221;Suzuki&#8221;)<br />
{<br />
   if(modeloM=HondaCBR.modelo &amp;&amp; marcaM=HondaCBR.marca) {<br />
      _velocidadeMax=HondaCBR.velMax;<br />
       modelo=HondaCBR.modelo;<br />
       marca=HondaCBR.marca;<br />
       //podendo aqui ter acesso a toda a class de definições:<br />
       //HondaCBR.serie<br />
      //HondaCBR.cilindros<br />
    }<br />
 else<br />
   {<br />
   modelo=modeloM;<br />
   marca=marcaM;<br />
  }<br />
}<br />
</coolcode><br />
Assim fariamos com que identificasse-mos rapidamente as caracteristicas da nossa moto, sendo que é um exemplo de entre muitos que podem simplificar muito as coisas em as3.</p>
<p>Existem alguns pontos também muito uteis, como interfaces ou re-escrita de métodos, embora já exija um bom conhecimento da programação AS3 e como o post já está bem grande, fica para uma próxima oportunidade.</p>
<p>Espero que as coisas fiquem mais simples agora e que pelo menos o AS3 seja desmistificado.</p>
<p>Um abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/10/30/tutorial-classes-as3-estrutura-e-compreensao/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Flex SDK, Builder, Air, Eclipse, AS3&#8230; por onde começar ?</title>
		<link>http://blog.msdevstudio.net/2008/09/12/flex-sdk-builder-air-eclipse-as3-por-onde-comecar/</link>
		<comments>http://blog.msdevstudio.net/2008/09/12/flex-sdk-builder-air-eclipse-as3-por-onde-comecar/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 08:19:49 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Análises]]></category>
		<category><![CDATA[Duvidas]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[diferencas]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[iniciação]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[Ria]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=611</guid>
		<description><![CDATA[Depois de uma duvida num post anterior, percebo que existem muitas duvidas na hora de iniciar no Flex visto que existem muitas referencias na net sobre iniciação, mas com diferentes pontos de arranque confundindo tantos termos; Flex Builder, Flex SDK, Air, Eclipse, pelo que vou passar a explicar um pouco sobre cada um para que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/09/flex_doubt.png"><img class="alignright size-full wp-image-612" title="Flex e derivados explicados!" src="http://msdevstudio.com/blog/wp-content/uploads/2008/09/flex_doubt.png" alt="" width="200" height="100" /></a>Depois de uma duvida num post anterior, percebo que existem muitas duvidas na hora de iniciar no Flex visto que existem muitas referencias na net sobre iniciação, mas com diferentes pontos de arranque confundindo tantos termos; Flex Builder, Flex SDK, Air, Eclipse, pelo que vou passar a explicar um pouco sobre cada um para que seja mais facil de entender toda esta complexidade que erradamente complica o Flex.</p>
<p>Vejamos&#8230;</p>
<p><span id="more-611"></span></p>
<p><strong>Flex</strong>, é o nome em si de uma nova tecnologia baseada no flash. O flex não passa de uma framework para a plataforma flash, que implementa o flash com um aspecto visual muito mais elaborado transformando-o com um conteudo rico (RIA &#8211; Rich Internet Aplication) muito por causa da sua capacidade de inter-agir com enumeras linguagens de programação como php, asp, .net ou java e com as mais completas bases de dados e API&#8217;s. Ou seja, quase tudo o que é feito em flex é possivel de fazer no flash, tendo como grande diferença no flash teriamos que criar todos os passos, e no flex, como é uma framework já possiu muitos componentes prontos a usar. Iniciado pela Macromedia em 2004 não tendo sido muito popular entre desenvolvedores, Mais tarde comprado pela Adobe (um dos primeiros softwares que a adobe comprou à macromedia, primeiro de todos) e lançado no mercado com o nome Adobe Flex, nome que toda a gente conhece.</p>
<p><strong>Air</strong>, (Adobe Integrated Runtime) uma aplicação  que permite conteudo flash / aplicações desenvolvido em Flex serem executadas no Desktop / Ambiente de trabalho sem necessidade de instalações elaboradas. Aumenta a possibilidade de extender o flash ao desktop permitindo ao flex ser considerado na hora de desenvolver uma aplicação para desktop que tenha grande necessidade de suporte online, com uma facilidade e capacidades extremas pode mesmo ser usado &#8220;apenas&#8221; para uma simples aplicação como um leitor de video ou editor de texto.</p>
<p><strong>Flex SDK</strong>, este é dos termos mais falados e não é nada mais que o &#8220;core&#8221;/coração do flex, são as tais funções da framework prontas a usar. Chamado de Kit de desenvolvimento de software (Software Development Kit) permite que posssamos usar todas as funções / elementos do flex nas nossas necessidades. (O SDK é gratuito e possui um compilador para compilar o nosso codigo e transforma-lo num .swf)</p>
<p><strong>Flex Builder</strong>.  Aqui podem existir muitas confusões&#8230; para desenvolver Flex não precisa do Flex Builder. Pode até usar o notepad, passo a explicar. O Flex Builder é um aplicativo que apresenta uma estrutura gráfica de apoio para o desenvolvimento de aplicações baseadas no nosso SDK (Chamadad de IDE &#8211; Integrated Development Environment), ou seja, é uma interface para o nosso SDK. O flex builder (software / ide ) foi baseado no Eclipse, um popular programa para programação das mais diversas linguagens. Como este é eclipse é versavel ao ponto de ser polivalente na interpretação de varias linguagens, a adobe decide basear o seu Flex Builder neste mesmo software. O Flex Builder é Pago (excepto instituições de ensino e estudantes).</p>
<p><strong>Eclipse</strong>. O programa que falei em cima, como disse é polivalente ao ponto de interpretar muitas das linguagens comuns com recurso a algumas plugins, inclusive existe uma plugin &#8220;flex builder&#8221; para o eclipse, que o transforma num autentico Flex Builder, mas esta extensão é paga. O eclipse (gratuito) é muito popular entre empresas / desenvolvedores / programadores por ter um grande suporte, ser muito completo e por suportar enumeras linguagens de programação. É mesmo usado por grandes empresas e grandes projectos como o Zend Studio, Aptana, Borland ou até IBM (principal &#8220;investidora&#8221; do projecto).</p>
<p><strong>Action Script</strong> é a base de tudo o que estamos a falar em cima, ou seja, apesar de o Flex usar uma variação do xml (MXML) para definir mais rapidamente alguns componentes da aplicação, na hora de compilar tudo vira Action Script 3. Esta linguagem é apontada como infinitamente extensivel o que nos permite conseguir fazer quase tudo com ela e principalmente obter uma grande variedade de componetes / extensões já feitas na comunidade e o mais interessante é que sendo uma linguagem orientada a objecto é de rápido desenvolvimento e para quem já trabalhou com o AS3 no flash é praticamente a mesma coisa. A grande dificuldade pode ser a passagem do AS2 para o AS3, mas posso indicar, não é assim tão dificil como parece e com pouco tempo vão passar a esquecer o AS2.</p>
<p>Assim que começei a desenvolver em AS3, esqueci completamente o AS2, mesmo no flash 8 onde ainda desenvolvia alguns sites em AS2 e que agora passei a fazer com o AS3. Muito mais rápido, pratico e eficaz.</p>
<p>Bem, para iniciantes em flex (e que não conheçam o Eclipse) o flex builder ainda é sem duvida a rampa de lançamento para iniciantes, pelo simples motivo de ter uma interface apenas orientada para o Flex e Air e ser de facil interpretação. O suporte do flex é enorme e têm por detrás a gigante adobe, pelo que podem contar com a muito boa qualidade de tutoriais e artigos (inglês) e como a comunidade de utilizadores / desenvolvedores está cada vez mais a aumentar, já se pode encontrar muito boa informação em Potuguês, incluido aqui no blog como o <em>&#8220;Adobe Flex a partir do Zero&#8221;</em> disponivel para <a href="http://msdevstudio.com/blog/2008/06/30/adobe-flex-a-partir-do-zero-livro-actualizado/" target="_blank">download aqui</a> e a introdução ao action script 3 &#8220;<em>trace (&#8216;Action Script 3&#8242;)</em>&#8221; disponivel para <a href="http://msdevstudio.com/blog/2008/06/30/tutorial-action-script-3-parte-i-o-livro/">download aqui</a>. Se percorrerem este blog encontrarão com certeza muita informação, bem como links para mais alguns blogs com muito boa informação e tutoriais.</p>
<p>Mais informações:</p>
<p>Ria &#8211; Rich Internet Aplications na wikipedia &#8211; <a href="http://pt.wikipedia.org/wiki/Internet_rica" target="_blank">Veja</a></p>
<p>Adobe Flex &#8211; Site oficial &#8211; <a href="http://www.adobe.com/products/flex/?promoid=BPDEQ" target="_blank">Veja</a></p>
<p>Adobe Open Source &#8211; Flex SDK &#8211; <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK;jsessionid=2FBC20E627A1955E1BEDF2B335DF4A9D" target="_blank">Veja</a></p>
<p>Adobe Air &#8211; <a href="http://www.adobe.com/products/air/" target="_blank">Veja</a></p>
<p>Eclipse &#8211; Site Oficial &#8211; <a href="http://www.eclipse.org/" target="_blank">Veja</a></p>
<p>Flex.org &#8211; Site de suporte e showcase &#8211; <a href="http://www.flex.org">Veja</a></p>
<p>Bom, espero que tenham ficado esclarecidos e agora saibam por onde começar.. <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/09/12/flex-sdk-builder-air-eclipse-as3-por-onde-comecar/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

