<?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; exemplos</title>
	<atom:link href="http://blog.msdevstudio.net/tag/exemplos/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>Flex/AS3 &#8211; Truques e Dicas #3 &#8211; break to label;</title>
		<link>http://blog.msdevstudio.net/2009/03/31/flexas3-truques-dicas-3/</link>
		<comments>http://blog.msdevstudio.net/2009/03/31/flexas3-truques-dicas-3/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 15:29:51 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Certificaçao Flex]]></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[Action Script]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[break]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=894</guid>
		<description><![CDATA[Bem, uma das vantagens dos ciclos é a redução enorme de linhas numa aplicação, pois bem existem muitos ciclos, mas hoje vou falar de um em especifico o for e de um elemento que muita gente conheçe, o break e um detalhe chamado &#8220;break to label&#8221;; O loop funciona de forma muito simples bem como [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, uma das vantagens dos ciclos é a redução enorme de linhas numa aplicação, pois bem existem muitos ciclos, mas hoje vou falar de um em especifico o<strong> for</strong> e de um elemento que muita gente conheçe, o<strong> break </strong>e um detalhe chamado<strong> &#8220;break to label&#8221;</strong>;</p>
<p>O loop funciona de forma muito simples bem como o break, imaginem:</p>
<p>[coolcode]<br />
for (var j:int = 0; j<5; j++) {<br />
 if ( j == 2)  break;<br />
}<br />
[/coolcode]</p>
<p><em>Este códig</em>o executa o cilco 5 vezes, mas como temos um break se o <strong>j==2</strong> ele simpelsmente só é executado 2 vezes&#8230; mas agora imaginem um ciclo dentro de outro ciclo:</p>
<p>[coolcode]<br />
for (var i:int = 0; i<5; i++) {<br />
  for (var j:int = 0; j<3; j++) {<br />
    if ( j == 2) break;<br />
  }<br />
}[/coolcode]</p>
<p>Neste caso, o break apenas vai travar o segundo ciclo <strong>for</strong> enquanto que o primeiro continua a ser executado, ou seja, para cada valor de <strong>I </strong>o segundo ciclo será executado 2 vezes porque tem o break==2;</p>
<p><span id="more-894"></span></p>
<p>Mas agora imaginem que eu quero parar ambos os ciclos quando o j==2, claro que poderia fazer o seguinte:</p>
<p>[coolcode]<br />
var controlo:int=0;</p>
<p>for (var i:int = 0; i< 5; i++) {<br />
  for (var j:int = 0; j<3; j++) {<br />
    if ( j == 2)) {<br />
    break;<br />
    controlo=1;<br />
  }<br />
}<br />
if(controlo==1) break;<br />
}<br />
[/coolcode]</p>
<p>Mas iria alongar muito o meu código certo? é aqui que entra em acção mais uma dica, o label, que nor permite indicar labels para servirem de break, sendo definido pelo utilizador, é um pouco complicado explicar em palavras, por isso vejam como resolveriamos o exemplo em cima:</p>
<p>[coolcode]<br />
inicial: for (var i:int = 0; i<5; i++) {<br />
  for (var j:int = 0; j<3; j++) {<br />
    if (j == 2)  break inicial;<br />
  }<br />
}<br />
[/coolcode]</p>
<p>Simples não? apenas indiquei um label 'inicial' na linha do primeiro ciclo, e quando fiz o break indiquei que o break deveria ser feito, mas saltando para o label, ou seja, saltando para fora dos 2 ciclos. Esta é mais uma dica que nos poupa bastante trabalho, principalmente em projectos grandes onde tenhamos varios ciclos executados dentro uns do outros. Estes labels também podem ser usados pelo <strong>continue </strong>mas isso fica para uma próxima dica.</p>
<p>Espero que seja util,</p>
<p>Abraço!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/03/31/flexas3-truques-dicas-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Presença no Tour de Flex!</title>
		<link>http://blog.msdevstudio.net/2009/01/29/presenca-no-tour-de-flex/</link>
		<comments>http://blog.msdevstudio.net/2009/01/29/presenca-no-tour-de-flex/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 09:46:34 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[código fonte]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[tour]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=814</guid>
		<description><![CDATA[Bem, depois de algum tempo a rever alguns promenores, finalmente o meu primeiro exemplo foi aprovado no Tour De flex, apesar de ser o primeiro, espero que seja o inicio da disposição de varios exemplos no aplicativo AIR. Para quem ainda nao sabe, o tour de flex é um aplicativo air que apresenta cerca de [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, depois de algum tempo a rever alguns promenores, finalmente o meu primeiro exemplo foi aprovado no Tour De flex, apesar de ser o primeiro, espero que seja o inicio da disposição de varios exemplos no aplicativo AIR.</p>
<p>Para quem ainda nao sabe, o tour de flex é um aplicativo air que apresenta cerca de 218 exemplos em flex e air, que demonstra em muitas da enormes capacidades do  Adobe Flex. Depois do excelente lançamento já à alguns tempos do<a href="http://flex.org/showcase"> showcase do flex</a> é lançado agora o <a href="http://flex.org/tour">Tour de flex</a> que sem duvida aliados podem ser capazes de incentivar ao uso da plataforma flash para aplicações realmente ricas para a internet e desktop. Podem fazer o download <a href="http://flex.org/tour">aqui</a>. (Para quem ja instalou o aplicativo, basta abri-lo visto que ele contém um sistema de actualização automatica.)</p>
<p>A minha participação está disponivel no menu em &#8220;Other Components&#8221;  orgulhosamente entre nomes como Alex Uhlmann,  Doug McCune ou Mark Shpeherd. O Titulo do aplicativos está no menu  &#8221;Mário Santos &#8211; Graphic Data Presentation&#8221; como podem ver pelos screenshots que se seguem:</p>
<table border="0" align="center">
<tbody>
<tr>
<td><img class="aligncenter size-medium wp-image-816" title="TSW on Tour de Flex" src="http://msdevstudio.com/blog/wp-content/uploads/2009/01/capturer2-300x231.jpg" alt="TSW on Tour de Flex" width="300" height="231" /></td>
<td><img class="aligncenter size-medium wp-image-815" title="TSW on Tour de Flex" src="http://msdevstudio.com/blog/wp-content/uploads/2009/01/capturer1-300x230.jpg" alt="TSW on Tour de Flex" width="300" height="230" /></td>
</tr>
</tbody>
</table>
<p>Espero que seja o primeiro de muitos, embora actualmente nao tenha muito tempo para a preparação de alguns exemplos.</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/01/29/presenca-no-tour-de-flex/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Tutorial Action Script 3 &#8211; 011</title>
		<link>http://blog.msdevstudio.net/2008/07/02/tutorial-action-script-3-011/</link>
		<comments>http://blog.msdevstudio.net/2008/07/02/tutorial-action-script-3-011/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 07:11:17 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Serie Tutoriais AS3]]></category>
		<category><![CDATA[action script 3]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/07/02/tutorial-action-script-3-011/</guid>
		<description><![CDATA[Em continuação com o tutorial&#8230; Esta parte já foi incluída no livro aqui disponibilizado para download&#8230; Vejamos o seguinte código de um package devidamente comentado: package teste { import flash.events.Event; import mx.containers.Panel; import mx.controls.Label; import mx.events.ChildExistenceChangedEvent; import mx.events.FlexEvent; public class teste extends Panel { //colocamos a imagem como embed (incoporada no nosso applicativo e definida [...]]]></description>
			<content:encoded><![CDATA[<p>Em continuação com o tutorial&#8230;</p>
<p>Esta parte já foi incluída no livro aqui disponibilizado para download&#8230;</p>
<p>Vejamos o seguinte código de um package devidamente comentado:</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">package teste</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">{</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">import flash.events.Event;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">import mx.containers.Panel;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">import mx.controls.Label;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">import mx.events.ChildExistenceChangedEvent;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">import mx.events.FlexEvent;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> teste extends Panel</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">{</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//colocamos a imagem como embed (incoporada no nosso applicativo e definida</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//com a variavel imediatamente em baixo (iconImg) disponivel na forma de class.</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">[Embed(<span style="color: #006080;">"flexBtn.png"</span>)]</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">var</span> iconImg:Class;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">/*Esta propriedade estará disponivel como elitura/escrita por exemplo: </span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">meuPainel.nomePessoal */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">[Bindable]</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">var</span> _nomePessoal:String;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//Disponivel como dataCriacao em modo de leitura apenas; meuPainel.dataCriacao</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">var</span> _dataCriacao:String;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//variavel temporaria usada para saber as horas/minutos/segundos usados em baixo</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">var</span> dados:Date = <span style="color: #0000ff;">new</span> Date;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> teste()</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">{</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//definimos o painel</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.width=270;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">this</span>.height=270;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.x=0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">this</span>.y=0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//adicionamos o eventListner</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.addEventListener(FlexEvent.CREATION_COMPLETE, criado,<span style="color: #0000ff;">false</span>,0,<span style="color: #0000ff;">true</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> criado(evt:FlexEvent):<span style="color: #0000ff;">void</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">/*definimos a hora exacta da criação do painel, com recurso ao date, neste </span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">caso d variavel dados */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">_dataCriacao=dados.getHours()+<span style="color: #006080;">":"</span>+dados.getMinutes()+<span style="color: #006080;">":"</span>+dados.getSeconds();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//adicionamos o icon ao painel</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.titleIcon=iconImg;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//verificamos se o nomePessoal foi definido</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">if</span>(!_nomePessoal) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">/*se o nome nao tiver sido dados, damos um nome temporario, no caso será dados como:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">Teste Painel "numero" onde o numero será um valor aleatorio entre 0 e 15, este</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">numero é conseguido através do Math.floor(Math.ramdom()*15); */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">_nomePessoal=<span style="color: #006080;">"Teste Painel "</span>+Math.floor(Math.random()*15);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">/*vamos usar um label que indica o nomePessoal e a hora da ciração do painel, este</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">Label desaparecerá assim que forem adicionados filhos ao painel, para isso usamos </span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">um evenListner*/</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">var</span> lbl:Label = <span style="color: #0000ff;">new</span> Label;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">lbl.name=<span style="color: #006080;">"status"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">lbl.x=0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">lbl.y=0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//definimos o texto</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">lbl.text=_nomePessoal + <span style="color: #006080;">" criado em: "</span>+dataCriacao;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//adicionamos como child ao painel</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.addChild(lbl);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//event listner para sabermos quando foi adicionado um filho ao painel para</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//podermos remover o label colocado em cima.</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">this</span>.addEventListener(ChildExistenceChangedEvent.CHILD_ADD, remove, <span style="color: #0000ff;">false</span>, 0, <span style="color: #0000ff;">true</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//despacha o evento terminado personalizado</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.dispatchEvent(<span style="color: #0000ff;">new</span> Event(<span style="color: #006080;">"btnsProntos"</span>));</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//remove o eventListner terminao, visto que apenas será disparado uma vez.</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">this</span>.removeEventListener(FlexEvent.CREATION_COMPLETE, criado);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> remove(evt:ChildExistenceChangedEvent):<span style="color: #0000ff;">void</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//função para remover o label com o nome e hora de ciração, isto acontece quando é</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//adicionado um filho ao painel.</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//removemos o child 0 (é o child lbl usado em cima, é o numero zero porque nada </span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//mais foi adicionado ao painel)</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">this</span>.removeChildAt(0);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//removemos o event listner caso contrario se forem adicionados mais que um filho</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">//esta função vai remover sempre o ultimo inserido</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">this</span>.removeEventListener(ChildExistenceChangedEvent.CHILD_ADD, remove);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">/*como quero apenas que a propriedade de dataCriacao seja apenas de leitura, fazemos</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">apenas a função para ler esse valor, com o get, chamado getter */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> get dataCriacao():String {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">return</span> _dataCriacao;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">/*como quero que a propriedade _nomePessoal seja quer de leitura, quer de escrita,</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #008000;">tenho que dizer à nossa classe que pode disponibilizar ou receber conteudo de/nessa</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">variavel, fazendo isso com as funções get e set **/</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> get nomePessoal():String {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">return</span> _nomePessoal;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #008000;">//Recebe uma string como nome</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> set nomePessoal(nome:String):<span style="color: #0000ff;">void</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">_nomePessoal=nome;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">}</pre>
</div>
</div>
<p>No exemplo em cima usei já uma class mais complexa, mas como está devidamente comentada será bem facil de perceber. Neste exemplo podemos entender o seguinte; É usado um Painel como base, (extends) e as suas propriedades&#8230;depois disso é automaticamente adicionado um titleIcon exemplificando atributos herdados do pai (Panel).</p>
<p><span id="more-267"></span></p>
<p>O que acrescentei depois foram alguns novos atributos ao nosso Painel Pessoal, como o nomePessoal e o dataCriacao, onde ambos podem ser acedidos para ler os seus valores:</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">trace(meuPainel.nomePessoal);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">trace(meuPainel.dataCriacao);</pre>
</div>
</div>
<p>e o nomePessoal pode ser definido:</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 19px; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;">meuPainel.nomePessoal=<span style="color: #006080;">"nome pessoal do meu painel"</span>;</pre>
</div>
</div>
<p>Esta leitura/escrita destes valores só é possivel devido aos getter&#8217;s e setter&#8217;s que estão disponiveis nas nossas class&#8217;s, onde o get é usado em:</p>
<p>trace(meuPainel.nomePessoal);</p>
<p>e o set:</p>
<p>meuPainel.nomePessoal=&#8221;nome pessoal do meu painel&#8221;;</p>
<p>Neste exemplo em cima também vemos o uso de algumas funções matematicas (floor e ramdom) que podem ser acedidas pela class Math. De seguida adicionamos um label ao painel assim que ele é criado com o nomePessoal e a hora da sua ciração, e ao juntar um eventListener esse label será eliminado assim que seja adicionado um child ao painel. Não esquecendo também que removemos os eventListeners para não causar conflito.</p>
<p>Para testarem esta class basta fazerem:</p>
<p>import mx.controls.Button;</p>
<p>import teste.teste;</p>
<p>import mx.controls.Alert;</p>
<p>private var myPanel:teste = new teste;</p>
<p>private function init():void {</p>
<p>myPanel.addEventListener(&#8220;btnsProntos&#8221;, terminado);</p>
<p>//myPanel.nomePessoal=&#8221;Painel GRUN&#8221;; podem ou não definir o nome pessoal do nosso painel.</p>
<p>addChild(myPanel);</p>
<p>}</p>
<p>private function terminado(evt:Event):void {</p>
<p>Alert.show(&#8220;Painel e icon completos.&#8221;)</p>
<p>}</p>
<p>private function addChildMe():void {</p>
<p>var temp:Button = new Button;</p>
<p>myPanel.addChild(temp);</p>
<p>}</p>
<p>Aqui se chamarem a função init, o nosso painel é criado no stage, com o nome e hora da criação&#8230; se chamarem a função addChildMe será adicionado um botão ao nosso painel e o label que lá existia será removido automaticamente. E pronto, finalmente têm a vossa class criada que é nada mais nada menos um painel personalizado, e sem darem muito por isso já usaram métodos e parâmetros hereditários, bem como a composição que anteriormente foi explicada..</p>
<p>Continua&#8230;</p>
<p>Abraço.</p>
<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/07/ccommons.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://msdevstudio.com/blog/wp-content/uploads/2008/07/ccommons-thumb.png" border="0" alt="ccommons" width="240" height="74" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/07/02/tutorial-action-script-3-011/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex deepLinking &#8211; Parametros browser</title>
		<link>http://blog.msdevstudio.net/2008/05/13/flex-deep-linking-detalhes-browser/</link>
		<comments>http://blog.msdevstudio.net/2008/05/13/flex-deep-linking-detalhes-browser/#comments</comments>
		<pubDate>Tue, 13 May 2008 10:07:08 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[código fonte]]></category>
		<category><![CDATA[componentes]]></category>
		<category><![CDATA[deep linking]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[parametros]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/05/13/flex-deeklinking-detalhes-browser/</guid>
		<description><![CDATA[Ontem tive um pequeno problema a desenvolver parte de um aplicativo (o frontend para o meu sistema imobiliário) onde necessitava de saber onde estava a correr o aplicativo, bem como o caminho relativo do servidor, já que tinha que obter varios caminhos para fotografias onde esses caminhos poderiam variar. Ou seja, precisava de saber o [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Ontem tive um pequeno problema a desenvolver parte de um aplicativo (o frontend para o meu sistema imobiliário) onde necessitava de saber onde estava a correr o aplicativo, bem como o caminho relativo do servidor, já que tinha que obter varios caminhos para fotografias onde esses caminhos poderiam variar. Ou seja, precisava de saber o caminho onde as minhas fotos se encontravam, já que se estivesse a correr apenas em, por exemplo <a href="http://www.msdevstudio.com/immo/frontend/">www.msdevstudio.com/immo/frontend/</a> saberia exactamente onde encontrar as minhas fotos, que estariam no caminho absoluto <a href="http://www.msdevstudio.com/immo/frontend/imgs">www.msdevstudio.com/immo/frontend/imgs</a> mas o problema seria se mudasse de servidor, as fotos poderia passar a estar em <a href="http://www.meuserverto.com/imgs">www.meuserverto.com/imgs</a> e aí teria que programar o flex para ir procurar as fotos a este caminho&#8230; mas dizem voces, porque não usar apenas source=&#8221;imgs/imgExempo1.png&#8221; ? pelo simples motivo que necessito de juntar algumas fotos a um HTML text, bem como dar a possibilidade do user mudar a directoria das imagens e os caminhos relativos. (não encontrei outra solução para já&#8230;)</p>
<p align="left">
<p align="left">Bom, dei de caras com as propriedades deepLink, que podem ser obtidas atravéz do browserManager/URLUtil, por isso fiz um pequeno exemplo que podem usar nas vossas aplicações, copiando o contudo do arquivo que disponibilizo em baixo para a raiz da vossa aplicação, depois basta fazerem o import na vossa aplicação:</p>
<div>
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">import com.msdevstudio.urlUtils;</div>
</div>
<p align="left">
<p align="left">São então disponibilizadas as seguintes funções:</p>
<p>getPort():String</p>
<p>getProtocol():String</p>
<p>getServer():String</p>
<p>getDoc():String</p>
<p>getTodo():String</p>
<p>getPath():String</p>
<p>onde para receberem os respectivos elementos devem usar:</p>
<div>
<div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">   1:</span> var util:urlUtils = <span style="color: #0000ff;">new</span> urlUtils();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">   2:</span> <span style="color: #008000;">//tomando como exemplo o link: http://msdevstudio.com/immo/backend/backend.html</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">   3:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">   4:</span> <span style="color: #008000;">//buscar nome do servidor:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">   5:</span> var nomeServidor:String = util.getServer();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">   6:</span> <span style="color: #008000;">//devolve: msdevstudio.com</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">   7:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">   8:</span> <span style="color: #008000;">//buscar protocolo</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">   9:</span> var protocolo:String = util.getProtocol();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  10:</span> <span style="color: #008000;">//devolve http</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  11:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  12:</span> <span style="color: #008000;">//buscar porta</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  13:</span> var porta:String = util.getPort();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  14:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  15:</span> <span style="color: #008000;">//buscar url completo</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  16:</span> var urlCompleto:String = util.getTodo();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  17:</span> <span style="color: #008000;">//devolve http://msdevstudio.com/immo/backend/backend.html</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  18:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  19:</span> <span style="color: #008000;">//buscar caminho relativo </span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  20:</span> var caminho:String = util.getPath();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  21:</span> <span style="color: #008000;">//devolve http://msdevstudio.com/immo/backend/</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  22:</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  23:</span> <span style="color: #008000;">//buscar o nome do portador do swf</span></pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #606060;">  24:</span> var documento:String = util.getDoc();</pre>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"><span style="color: #606060;">  25:</span> <span style="color: #008000;">// devolve backend.html</span></pre>
</div>
</div>
<p>Isto não é nada mais que um simples package que simplifica as coisas em aplicações medias/grandes e que em muitas variadas situações se torna muito util.</p>
<p>Podem fazer o download <a href="http://msdevstudio.com/blog/download-manager.php?id=9" target="_blank">aqui</a>.</p>
<p>fiz um package pelo simples motivo de ajudar a quem ler a perceber como um package funciona, bem como se podem tornar simples a utilização destes packages principalmente pela sua reutilização por outros programadores e outras aplicações. Podem ver o código comentado também.</p>
<p>Aguarda-se feedback.</p>
<p><img class="alignleft" style="float: left;" src="http://msdevstudio.com/blog/wp-content/uploads/2008/05/image.png" alt="pdf" width="23" height="29" /> Este artigo está disponivel em <a href="http://msdevstudio.com/blog/download-manager.php?id=11" target="_blank">pdf </a>para download.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/05/13/flex-deep-linking-detalhes-browser/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>15 Flex &amp; AS3 Feed&#039;s rss a n&#227;o perder!</title>
		<link>http://blog.msdevstudio.net/2008/05/13/15-flex-as3-feeds-rss-a-no-perder/</link>
		<comments>http://blog.msdevstudio.net/2008/05/13/15-flex-as3-feeds-rss-a-no-perder/#comments</comments>
		<pubDate>Tue, 13 May 2008 08:21:14 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[Ria]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/05/13/15-flex-as3-feeds-rss-a-no-perder/</guid>
		<description><![CDATA[Que os feed&#8217;s foi a melhor coisa que inventaram eu não tenho duvida, e já à muito que uso o thunderbird como cliente de email e leitor de feed&#8217;s. (recomendo vivamente) Alem de estar sempre a par das ultimas novidades em tudo quanto é área, podemos realmente ter acesso a feed&#8217;s de sites muito bons, [...]]]></description>
			<content:encoded><![CDATA[<p>Que os feed&#8217;s foi a melhor coisa que inventaram eu não tenho duvida, e já à muito que uso o thunderbird como cliente de email e leitor de feed&#8217;s. (recomendo vivamente)</p>
<p>Alem de estar sempre a par das ultimas novidades em tudo quanto é área, podemos realmente ter acesso a feed&#8217;s de sites muito bons, que revelam muito boa qualidade.</p>
<p>Dos cerca de 120 feed&#8217;s que tenho no thunderbird, vou começar por ir deixando uma lista de vez a quando no blog, não se assustem porque quase todos os feed&#8217;s estão em inglês <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  mas é onde se encontra muita informação de boa qualidade (não estou a desprezar o que se faz de bom em PT)</p>
<p>Aqui vai:</p>
<p>Flex Examples (não podia faltar) &#8211; <a href="http://feeds.feedburner.com/blogspot/PmCX?format=xml">http://feeds.feedburner.com/blogspot/PmCX?format=xml</a></p>
<p>Alex’s Flex Closet &#8211; <a href="http://blogs.adobe.com/aharui/atom.xml">http://blogs.adobe.com/aharui/atom.xml</a></p>
<p>Beedigital &#8211; <a href="http://www.beedigital.net/blog/feed/">http://www.beedigital.net/blog/feed/</a></p>
<p>Building blocks &#8211; <a href="http://joelhooks.com/feed/">http://joelhooks.com/feed/</a></p>
<p>Digital Backcountry &#8211; <a href="http://feeds.feedburner.com/ryanstewart">http://feeds.feedburner.com/ryanstewart</a></p>
<p>Eric feminella &#8211; <a href="http://www.ericfeminella.com/blog/wp-rss2.php">http://www.ericfeminella.com/blog/wp-rss2.php</a></p>
<p>James Ward &#8211; <a href="http://www.jamesward.org/wordpress/feed">http://www.jamesward.org/wordpress/feed</a></p>
<p>Metah AS3 &#8211; <a href="http://www.metah.ch/as3/rss.php">http://www.metah.ch/as3/rss.php</a></p>
<p>Ntt.cc &#8211; <a href="http://feeds.feedburner.com/Nttcc?format=xml">http://feeds.feedburner.com/Nttcc?format=xml</a></p>
<p>John Nack &#8211; <a href="http://blogs.adobe.com/jnack/index.xml">http://blogs.adobe.com/jnack/index.xml</a></p>
<p>Mike Potter &#8211; <a href="http://feeds.feedburner.com/adobe/mpotter">http://feeds.feedburner.com/adobe/mpotter</a></p>
<p>Flex Doc Team &#8211; <a href="http://blogs.adobe.com/flexdoc/atom.xml">http://blogs.adobe.com/flexdoc/atom.xml</a></p>
<p>Kiwi Project &#8211; <a href="http://feeds.feedburner.com/kiwiproject">http://feeds.feedburner.com/kiwiproject</a></p>
<p>Penguin.SWF &#8211; <a href="http://blogs.adobe.com/penguin.swf/atom.xml">http://blogs.adobe.com/penguin.swf/atom.xml</a></p>
<p>Adobe Design Center &#8211; <a href="http://feeds.feedburner.com/AdobeDesignCenter">http://feeds.feedburner.com/AdobeDesignCenter</a></p>
<p>Como repararam, muitos destes feed&#8217;s pertencem a blog oficialmente suportados pela adobe e seus programadores, ou seja, quero dizer que a adobe ainda é o melhor recurso para informação de qualidade em inglês&#8230; quanto a português, brevemente coloco alguns feed&#8217;s que bons blog&#8217;s que por aí se encontram <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <a href="http://blogs.adobe.com/aharui/atom.xml"> </a></p>
<p><small>gp:<script type="text/javascript"><!--
google_ad_client = "pub-6064669184777860";
/* Link de texto, criado em 11/05/08 */
google_ad_slot = "8267866547";
google_ad_output = "textlink";
google_ad_format = "ref_text";
google_cpa_choice = ""; // on file
// --></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></small></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/05/13/15-flex-as3-feeds-rss-a-no-perder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Top 10 erros ao desenvolver aplica&#231;&#245;es Flex.</title>
		<link>http://blog.msdevstudio.net/2008/04/29/top-10-erros-ao-desenvolver-aplicaes-flex/</link>
		<comments>http://blog.msdevstudio.net/2008/04/29/top-10-erros-ao-desenvolver-aplicaes-flex/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 11:35:52 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Design & Web Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Análises]]></category>
		<category><![CDATA[erros]]></category>
		<category><![CDATA[exemplos]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/04/29/top-10-erros-ao-desenvolver-aplicaes-flex/</guid>
		<description><![CDATA[Vi um post bastante interessante no site www.infoq.com que fala dos Top 10 de &#8220;enganos/erros/confusões&#8221; a quando da programação de uma aplicação em Flex. Este post fala de aspectos muito interessantes e importantes que devemos ter em atenção ao construir uma aplicação em Flex. Como este post se encontra em inglês, vou tentar fazer uma [...]]]></description>
			<content:encoded><![CDATA[<p>Vi um post bastante interessante no site <a href="http://www.infoq.com/news/2008/04/top-10-flex-mistakes" target="_blank">www.infoq.com</a> que fala dos Top 10 de &#8220;enganos/erros/confusões&#8221; a quando da programação de uma aplicação em Flex. Este post fala de aspectos muito interessantes e importantes que devemos ter em atenção ao construir uma aplicação em Flex. Como este post se encontra em inglês, vou tentar fazer uma tradução  em português, para que seja mais fácil a sua compreensão, bem como adicionar algumas opiniões pessoais.  Vale a pena ler!! Começando.  <strong>1. Usar uma framework RIA para construir aplicações Web 1.0 </strong> <strong>- (Nova tecnologia, velhos hábitos)</strong></p>
<blockquote><p>Um dos maiores desafios a quando da mudança de aplicações web 1.0 para o desenvolvimento de Ria&#8217;s é aprender a pensar diferente. O flex disponibiliza um conjunto de componentes que permite fazer coisas que eram impensáveis e impossíveis de fazer à apenas uns anos atrás. Por vezes essa possibilidade é esquecida e a framework acaba por ser utilizada apenas para implementar as tradicionais aplicações Web 1.0.  Construir aplicações Web 2.0 é mais do que um actualizar parcial de uma pagina e adicionar cantos redondos em divs. Para isso é altamente recomendado recorrer apenas ao Javascript/Ajax e Css e não desperdiçar tempo com o Flex, porque o flex deve ser usado sim para oferecer um design e funcionalidade atractiva para os utilizadores.  Se já são programadores java, aprender Action Script 3 e a linguagem de interface será brincadeira de criança. O maior desafio por vezes é que os programadores não estão habituados a &#8220;desenhar&#8221; visualmente a sua aplicação, e para o desenvolvimento de ria&#8217;s é um &#8220;must-know&#8221; ter alguns conhecimentos de design. A programação pode ser muito boa, mas a verdadeira &#8220;força&#8221; do Flex está no seu aspecto visual aliado à sua versatilidade.</p></blockquote>
<p><strong>2. Quebrando aspectos standard dos browsers.</strong></p>
<blockquote><p>Enquanto o Flex providencia uma excelente plataforma para melhorar a experiência e agradar o utilizador, continua a ser muito importante manter o aspecto &#8220;familiar&#8221; do site/aplicação como os botões anteriores e seguintes do browser, bookmarking e auto-complete. Ao contrário do que às vezes se pensa, estes aspectos não são difíceis de implementar no Flex. O flex 3 já inclui propriedades &#8220;deep-linking&#8221; para suportar os botões seguinte e anterior bem como bookmark. E aspectos como o &#8220;auto-complete&#8221; pode ser facilmente implementado, até mesmo usado alguns componentes.  Deep Linking @ <a href="http://labs.adobe.com/wiki/index.php/Flex_3:Feature_Introductions:_Deep_Linking" target="_blank">labs.adobe.com &#8211; Flex Wiki.</a> Auto complete; Exemplo e componente @ <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&amp;loc=en_us&amp;extid=1047291" target="_blank">AutoComplete Input</a></p></blockquote>
<p><strong>3. Muitos &#8220;containers&#8221; reduzem o desempenho da aplicação.</strong></p>
<blockquote><p>O flash player utiliza uma hierarquia gráfica para apresentar objectos parecida com objectos DOM em HTML. Quantos mais &#8220;containers&#8221; forem usados, mais tempo leva a rederização. No centro de desenvolvimento Flex da adobe (Adobe&#8217;s Flex Developer Center) pode-se encontrar um artigo que fala das melhores práticas relacionadas com a performance do Flex, incluindo o uso de &#8220;containers&#8221;.  O maior inimigo da performance do Flex está relacionado com a tentação de usar muitos &#8220;containers&#8221; para melhorar o aspecto da nossa aplicação, mas isso aumenta muito negativamente a performance do Flex. Este é o pior inimigo da performance do Flex, e felizmente é 100% contornável, bastando fazer uso moderado destes mesmos containers.</p></blockquote>
<p><strong>4. Usar XML para transferência de dados em protocolos (já optimizados), reduz o desempenho.</strong></p>
<blockquote><p>O flex oferece aos programadores um grande número de opções de comunicação entre o Flex e tecnologias servidor, incluindo AMF3, XML, SOAP, e pedido HTTP directos. Podem ver um exemplo do uso destas tecnologias bem como os &#8220;benchmarks&#8221;  <a href="http://www.jamesward.org/census/" target="_blank">aqui</a>.  O BlazeDS (open source)  actualmente com suporte da adobe, deve ser uma escolha quase obrigatória em projectos que usem backend em Java, fazendo uso do protocolo AMF3. O AMF é um protocolo de transferência binária que facilmente se integra com o Java, PHP, Python ou praticamente qualquer linguagem server side, recorrendo a diversas variações especificas para as variadas linguagens e que oferece muito mais fiabilidade e performance.</p></blockquote>
<p><strong>5. Tentar contratar um programador Flex &#8220;pode não ser a melhor nem fácil escolha&#8221;.</strong></p>
<blockquote><p>Programadores Flex experientes e com credenciais, ainda são muito difíceis de encontrar e os que se encontram são pagos a peso de ouro. Actualmente o Flex encontra-se em vias de adopção como foi o java nos finais dos anos 90. O pedido de programadores flex continua a exceder as ofertas o que torna muito dificil encontrar um bom programador de Flex, mas ao mesmo tempo cria uma grande oportunidade para os programadores Java e não só  expandirem os seus conhecimentos e adoptar o flex como framework de desenvolvimento. Muitas empresas que procuram programadores Flex acabam por contratar pessoas que conhecem bastante bem o Java ou outras linguagens de aplicativos Web, e dada a escassez de profissionais Flex, acabam mesmo por dar ao longo de algumas semanas acções de formação de Flex já que a sua linguagem e API&#8217;s são facilmente aprendidas por qualquer pessoa que esteja já familiarizada com programação Web e GUI&#8217;s.</p></blockquote>
<p><strong>6. Não usar exageradamente animações e efeitos.</strong></p>
<blockquote><p>Usando o flash como plataforma de distribuição, facilmente um programador flex se sente tentado a usar e abusar dos &#8220;one-line-effects&#8221; que o flex traz, mas os programadores apenas devem usar estes efeitos quando eles são mesmo necessários, e nunca os usar sabendo que o utilizador se distrairá do contexto da aplicação. O uso exagerado de efeitos pode cansar o utilizador!!  Os efeitos no flex, bem como as suas durações devem ser tidos em conta, e se puderem contar com uma ajuda e percepção visual de um &#8220;Designer&#8221; melhor, assim com certeza que terão uma aplicação bem mais agradável.  Muitas das animações são simplesmente muito longas, lentas, chatas e por vezes excessivas. Reduzam as animações!! Se existe alguma coisa que os utilizadores não gostam é ter que esperar pelo terminar de uma animação, que por vezes nem agrada, para poderem começar a usar o aplicativo.  Não se pretende terminar com as animações no flex, mas sim sensibilizar para o bom uso das mesmas. Cada animação/efeito deve ter um propósito e serem aplicados moderadamente!!  Podem ver um artigo bem interessante sobre animações e efeitos <a href="http://laair.org/node/203" target="_blank">aqui</a>.</p></blockquote>
<p><strong>7. Não definir um &#8220;eco-sistema&#8221; na empresa.</strong></p>
<blockquote><p>Como em todos os trabalhos de programação de projectos de software, também no flex é extremamente importante montar um &#8220;eco-sistema&#8221; para desenvolver aplicações.  O TTD (Test Driven Development, ou desenvolvimento &#8220;assistido&#8221;), é um marco em qualquer projecto de qualquer empresa. Para o Flex, o <a href="http://code.google.com/p/as3flexunitlib/" target="_blank">FlexUnit framework</a> serve precisamente para programar &#8220;unit tests&#8221;. No Adobe Developer Connection, o Neil Webb discute a utilização do TTD para programadores Flex, usando o FlexUnit. (podem ver o post <a href="http://www.adobe.com/devnet/flex/articles/unit_testing.html" target="_blank">aqui</a> ). Existe também o <a href="http://code.google.com/p/flexcover/" target="_blank">Flexcover</a> para &#8220;code coverage reporting&#8221;, algo como &#8220;relatórios de cobertura do código&#8221;.  A integração contínua (<a href="http://martinfowler.com/articles/continuousIntegration.html">CI</a>), está provada como sendo uma boa pratica para construir e programar Flex quando o projecto é desenvolvido por mais que um programador. Em semelhança ao Java, as plugins Ant e Maven também estão disponíveis para integração contínua de aplicações Flex.</p></blockquote>
<p><strong>8. Não usar a framework por completo.</strong></p>
<blockquote><p>Existe um número elevado de &#8220;features&#8221; opcionais no Flex que devem ser consideradas no desenvolver de uma aplicação. Por exemplo  <a href="http://www.adobe.com/devnet/flex/articles/client_perf_11.html" target="_blank">Runtime Shared Libraries (RSL)</a> podem ser usadas para diminuir bastante o tamanho das aplicações.  O tamanho de uma aplicação pode ser reduzido utilizando referencia directas a ficheiros/imagens/scritps que podem ser separadamente transferidos do servidor para a cache do computador do utilizador. Esta operação obriga que varias aplicações que utilizem estes mesmos &#8220;assets&#8221; sejam carregados na &#8220;runtime&#8221;, mas o utilizador apenas as descarregará para o seu computador apenas uma vez. Estes ficheiros/imagens/scripts partilhados são chamados de Runtime Shared Libraries.  Outra das &#8220;features&#8221; pouco usadas da framework, são as características de usabilidade já incluídas no Flex. Podem ler mais sobre estas características <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=accessible_2.html" target="_blank">aqui</a>. Quem deseja realmente respeitar e usar acessibilidade nas suas aplicações, o flex torna simples essa tarefa e oferece muitas características como podem ver <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=l10n_2.html#158253" target="_blank">aqui</a>.</p></blockquote>
<p><strong>9. Não usar &#8220;renderers&#8221; complexos em DataGrid&#8217;s.</strong></p>
<blockquote><p>O itemRenderer original para as dataGrid&#8217;s já está muito optimizado! (e por consequência ao serem alterados ou implementados irão causar diminuição do desempenho, falado no ponto 3.)  O número de &#8220;item renderers&#8221; que são &#8220;compilados&#8221; pela dataGrid multiplica-se pelas linhas e colunas da tabela, criando uma enorme quantidade de código. Para minimizar esse impacto, deve-se utilizar os &#8220;itemRenderers&#8221; quando são realmente necessários e estes devem ser o mais optimizados possível. Quando itemRenderes mais elaborados e complexos são mesmo necessários deve-se usar um UIComponent (ou outras classes &#8220;low-level&#8221;) e colocar o seu conteúdo para a linha/coluna manualmente.</p></blockquote>
<p><strong>10. Não preparar a nossa aplicação para modo Offline.</strong></p>
<blockquote><p>O modelo tradicional das Ria&#8217;s é orientado para o browser, mas tecnologias como o <a href="http://www.infoq.com/air;jsessionid=E0C57021C2A38D89A7743326EFA32DC9" target="_blank">Adobe AIR</a> ou o <a href="http://www.infoq.com/news/2007/06/googlegears;jsessionid=E0C57021C2A38D89A7743326EFA32DC9" target="_blank">Google Gears</a> actualmente permitem que as aplicações Flex sejam executadas offline. Não preparando as aplicações para uma possível execução offline, se o utilizador/cliente a desejar em modo offline, as coisas tornam-se bastante difíceis de transformar, já que teríamos que refazer grande parte do código da aplicação. Tipicamente, aplicações de negócio/empresariais, correm num servidor. Uma ria em modo offline, permite muito mais &#8220;expansão&#8221; para o cliente/utilizador, pelo que a arquitectura da aplicação deve poder ser facilmente implementada e transformada de/para modo online/offline.</p></blockquote>
<p>Bom, e assim termino, a tradução não foi feita à letra, mas penso que a excelente qualidade informativa do post original, mereceu este meu trabalho de &#8220;tradução.&#8221;</p>
<p>Foi util??</p>
<p>Um abraço.</p>
<p><a href="http://msdevstudio.com/blog/download-manager.php?id=14"><img class="alignleft" style="float: left;" src="http://msdevstudio.com/blog/pdf.png" alt="" width="23" height="29" /></a></p>
<p>Este artigo está disponivel em <a href="http://msdevstudio.com/blog/download-manager.php?id=14">pdf</a> para  download.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/04/29/top-10-erros-ao-desenvolver-aplicaes-flex/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe video workshop &#8211; Mais uma p&#233;rola!!</title>
		<link>http://blog.msdevstudio.net/2008/04/28/adobe-video-workshop-mais-uma-prola/</link>
		<comments>http://blog.msdevstudio.net/2008/04/28/adobe-video-workshop-mais-uma-prola/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 18:51:34 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Design & Web Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[screen cast]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/04/28/adobe-video-workshop-mais-uma-prola/</guid>
		<description><![CDATA[A adobe não para de me surpreender, depois do lançamento da Adobe Creative Suite 3 (CS3) que vinha acompanhada na sua &#8220;full release&#8221; com um dvd de &#8220;video tips&#8221;, eis senão que descubro no site da adobe, esse mesmo dvd (em vídeo, será?), que ainda não tive tempo para verificar se os vídeos são todos [...]]]></description>
			<content:encoded><![CDATA[<p>A adobe não para de me surpreender, depois do lançamento da Adobe Creative Suite 3 (CS3) que vinha acompanhada na sua &#8220;full release&#8221; com um dvd de &#8220;video tips&#8221;, eis senão que descubro no site da adobe, esse mesmo dvd (em vídeo, será?), que ainda não tive tempo para verificar se os vídeos são todos do conteúdo desse dvd que acompanha a CS3, mas pelos que vi parece mesmo que o conteúdo está todo lá.</p>
<p>Apesar de englobar apenas os produtos cs3, tais como o Ilustrador, Photoshop, Fireworks, Bridge, Contribute, Flash e não dedicar muito ao desenvolvimento de ria&#8217;s, é interessantíssimo para todos, mesmo os programadores, para todos ficarmos a ganhar com interfaces e conhecimentos da grande vantagem do conhecimento dos produtos da adobe.</p>
<p>Os vídeos online resultam de uma parceria da adobe com a lynda.com que resultou num excelente trabalho.</p>
<p>Bom, os curiosos já estão fartos de ler, por isso aqui vai o desejado link para o &#8220;Adobe Video Workshop&#8221; e paciência para os cerca de 180 vídeos Flex Powered!!</p>
<p><a title="http://www.adobe.com/designcenter/video_workshop/" href="http://www.adobe.com/designcenter/video_workshop/">http://www.adobe.com/designcenter/video_workshop/</a></p>
<p>Um pérola, não?!</p>
<p>Edit: Só agora que descobri mais referençias a esse video workshop que afinal já está online desde a segunda metade do ano passado&#8230; epah&#8230;!! ando atrasado!! mas é um boa noticia na mesma, pode ser que não seja o unico a nao saber!! <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/04/28/adobe-video-workshop-mais-uma-prola/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seminarios Adobe Online, finalmente os downloads!!</title>
		<link>http://blog.msdevstudio.net/2008/04/17/adobe-eseminars-seminarios-online-finalmente-os-downloads/</link>
		<comments>http://blog.msdevstudio.net/2008/04/17/adobe-eseminars-seminarios-online-finalmente-os-downloads/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 14:50:58 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Análises]]></category>
		<category><![CDATA[Design & Web Design]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML, XHTML, CSS, Java Script]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[acrobat]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[apostilha]]></category>
		<category><![CDATA[aprendizagem]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[e-seminar]]></category>
		<category><![CDATA[eseminar]]></category>
		<category><![CDATA[exemplos]]></category>
		<category><![CDATA[screen cast]]></category>
		<category><![CDATA[seminarios online]]></category>
		<category><![CDATA[tecnologias]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/04/17/adobe-eseminars-seminarios-online-finalmente-os-downloads/</guid>
		<description><![CDATA[Depois de muito procurar e virar de &#8220;ponta-cabeça&#8221; o site da adobe não consegui encontar nada que referisse aos tais seminários que notifiquei aqui no post seminários adobe online coisa que achei bem estranha já que na altura da subscrição desses mesmos seminários era-nos dito que seriam gravados e disponibilizados para download, coisa que parece [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/04/image4.png"><img style="border: 0px none " src="http://msdevstudio.com/blog/wp-content/uploads/2008/04/image-thumb4.png" border="0" alt="image" width="244" height="77" /></a></p>
<p>Depois de muito procurar e virar de &#8220;ponta-cabeça&#8221; o site da adobe não consegui encontar nada que referisse aos tais seminários que notifiquei aqui no post <a href="http://msdevstudio.com/blog/2008/03/20/adobe-e-seminair-seminrio-online/">seminários adobe online</a> coisa que achei bem estranha já que na altura da subscrição desses mesmos seminários era-nos dito que seriam gravados e disponibilizados para download, coisa que parece que ainda não foi propriamente feita&#8230;</p>
<p>Depois de algum trabalho pelos meandros de vários motores de busca lá consegui começar a colher informações de onde se encontravam estes seminários&#8230; ainda não estão propriamente disponíveis para download, mas já podem ser vistos no centro &#8220;multimédia&#8221; do Adobe Acrobat Connect.</p>
<p>Apenas não consegui encontrar  3 destes seminários, mas em contra-partida encontrei alguns também bem interessantes, então deixo aqui a lista:</p>
<div align="left" width="100%">
<strong>Flex Architecture</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p13859376/" target="_blank">http://seminars.adobe.acrobat.com/p13859376/</a></p>
<p><strong>AIR Native Drag and Drop &#8211; </strong><a href="http://seminars.adobe.acrobat.com/p48733864/" target="_blank">http://seminars.adobe.acrobat.com/p48733864/</a></p>
<p><strong>ILOG Elixir: Your Remedy for Vibrant Data Visualization</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p97866770/" target="_blank">http://seminars.adobe.acrobat.com/p97866770/</a></p>
<p><strong>The Essential Guide to Dreamweaver CS3 with CSS, Ajax, and PHP</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p67172044/" target="_blank">http://seminars.adobe.acrobat.com/p67172044/</a></p>
<p><strong>Flex Visual Data &amp; Charting</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p29446240/" target="_blank">http://seminars.adobe.acrobat.com/p29446240/</a></p>
<p><strong>Adding Live Chat with ColdFusion &amp; Adobe Blaze DS</strong> &#8211; <a href="https://admin.adobe.acrobat.com/_a227210/p41591416/" target="_blank">https://admin.adobe.acrobat.com/_a227210/p41591416/</a></p>
<p><strong>Flex Data Services -</strong> <a href="http://seminars.adobe.acrobat.com/p41615224/" target="_blank">http://seminars.adobe.acrobat.com/p41615224/</a></p>
<p><strong>Flex and Java</strong> &#8211; <a href="https://admin.adobe.acrobat.com/_a227210/p87391680/" target="_blank">https://admin.adobe.acrobat.com/_a227210/p87391680/</a> &amp; <a href="http://seminars.adobe.acrobat.com/p60809699/" target="_blank">http://seminars.adobe.acrobat.com/p60809699/</a></p>
<p><strong>ColdFusion Powered Rich Applications for the Internet and Desktop</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p71068630/" target="_blank">http://seminars.adobe.acrobat.com/p71068630/</a></p>
<p><strong>Flash Lite and Flex for Tourism</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p45858446/" target="_blank">http://seminars.adobe.acrobat.com/p45858446/</a></p>
<p><strong>Adobe AIR Local Data Storage Options With Emphasis on Using Embedded SQL Databases &#8211; </strong><a href="http://seminars.adobe.acrobat.com/p78202681/" target="_blank">http://seminars.adobe.acrobat.com/p78202681/</a></p>
<p><strong>Dreamweaver: Effective Standards-based Workflows for Ajax -</strong> <a href="http://seminars.adobe.acrobat.com/p31899782/" target="_blank">http://seminars.adobe.acrobat.com/p31899782/</a></p>
<p><strong>Building AIR Applications with Flash CS3 -</strong> <a href="http://seminars.adobe.acrobat.com/p69012000/" target="_blank">http://seminars.adobe.acrobat.com/p69012000/</a></p>
<p><strong>Integrating Salesforce.com and Flex</strong> &#8211; <a href="http://eminars.adobe.acrobat.com/p59832774/" target="_blank">http://eminars.adobe.acrobat.com/p59832774/</a></p>
<p><strong>Building Rich Internet Applications with Flex 3</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p34983052/" target="_blank">http://seminars.adobe.acrobat.com/p34983052/</a></p>
<p><strong>What’s New in ColdFusion 8</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p91837280/" target="_blank">http://seminars.adobe.acrobat.com/p91837280/</a></p>
<p><strong>Extending Web to the Desktop with AIR -</strong> <a href="http://seminars.adobe.acrobat.com/p36566625/" target="_blank">http://seminars.adobe.acrobat.com/p36566625/</a></p>
<p>Extras:</p>
<p><strong>Introduction to Flex Data Services</strong> &#8211; <a href="http://seminars.adobe.acrobat.com/p41615224/" target="_blank">http://seminars.adobe.acrobat.com/p41615224/</a></p>
<p><strong>AIR applications with ColdFusion and Flex 3 -</strong> <a href="http://adobechats.adobe.acrobat.com/p12001735/" target="_blank">http://adobechats.adobe.acrobat.com/p12001735/</a></p>
<p><strong>BlazeDS Revealed</strong> &#8211; <a href="http://experts.acrobat.com/p90783934/" target="_blank">http://experts.acrobat.com/p90783934/</a></p>
<p><strong>Debugging Flex Applications &#8211; Atl Flash/Flex UG</strong> &#8211; <a href="http://adobechats.adobe.acrobat.com/p91186888/" target="_blank">http://adobechats.adobe.acrobat.com/p91186888/</a></p>
<p><strong>Introduction to Ant</strong> &#8211;  <a href="http://experts.acrobat.com/p53858056/" target="_blank">http://experts.acrobat.com/p53858056/</a></p>
<p><strong>Flex Application Frameworks</strong> &#8211; <a href="https://admin.adobe.acrobat.com/_a200985228/p12266504/" target="_blank">https://admin.adobe.acrobat.com/_a200985228/p12266504/</a></p>
<p><strong>Load Testing Flex Applications with WebLOAD</strong> &#8211; <a href="https://admin.adobe.acrobat.com/_a227210/p18269627/" target="_blank">https://admin.adobe.acrobat.com/_a227210/p18269627/</a></p>
<p><strong>ColdFusion 8 and Flex 3: RIAs development just got easier</strong> &#8211; <a href="https://admin.adobe.acrobat.com/_a227210/p73818848/" target="_blank">https://admin.adobe.acrobat.com/_a227210/p73818848/</a></p>
<p><strong>Flex for .NET</strong> &#8211; <a href="https://admin.adobe.acrobat.com/_a227210/p78614671/" target="_blank">https://admin.adobe.acrobat.com/_a227210/p78614671/</a></div>
<p>Bem, acabou a lista, bem grande por sinal, mas com a certeza de muita utilidade!</p>
<p>Cumprimentos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/04/17/adobe-eseminars-seminarios-online-finalmente-os-downloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

