<?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; eventos</title>
	<atom:link href="http://blog.msdevstudio.net/tag/eventos/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>Flex/AS3 &#8211; Truques e Dicas #9 &#8211; Weak Reference / GC</title>
		<link>http://blog.msdevstudio.net/2009/04/14/flexas3-truques-e-dicas-9-weak-reference-gc/</link>
		<comments>http://blog.msdevstudio.net/2009/04/14/flexas3-truques-e-dicas-9-weak-reference-gc/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 13:03:36 +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[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[action script 3]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[collection]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[garbage]]></category>
		<category><![CDATA[gc]]></category>
		<category><![CDATA[weak reference]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=978</guid>
		<description><![CDATA[Um dos aspectos que mais incomodam no flash, principalmente em aplicações que são usadas ao longo de bastante tempo, e que usam muitas funções dinamicas, é o facto de a memória utilizada pelo projecto ser consideravel, e se não tomamos cuidado, facilmente ela aumenta e pode até mesmo impedir que o projecto se execute normalmente [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos aspectos que mais incomodam no flash, principalmente em aplicações que são usadas ao longo de bastante tempo, e que usam muitas funções dinamicas, é o facto de a memória utilizada pelo projecto ser consideravel, e se não tomamos cuidado, facilmente ela aumenta e pode até mesmo impedir que o projecto se execute normalmente e em alguns casos que o flash simplesmente faça com que o browser deixe de funcionar.</p>
<p>Existem muitos pontos onde podemos poupar o motor do flash, e não vou falar de todos mas apenas de 2, o weak reference em eventos e a atribuição de null.</p>
<p>Estes pontos trabalham directamente com o &#8220;core&#8221; do flash e podem poupar muitas dores de cabeça, embora eu não os use sempre, é importante que os conheçam no caso da sua aplicação ser comercial visto que pode poupar algumas dores de cebeça.<br />
O flash possui um sistema de recolha de lixo, chamado de garbage collector ou apenas GC, ou seja, dentro da maquina virtual, periodicamente é vasculhado todo o código da aplicação à procura de elementos que já não sejam usados e no caso de encontrar algum o eliminar da memória, fazendo com que não seja ocupada memória desnecessária. Embora este sistema seja de extrema importancia ele contém algumas falhas e não faz o seu trabalho como deve ser&#8230; (não vou falar porque visto que é uma assunto muito debatido). Para evitar-mos uso da memória sem necessidade existem alguns truques, como o re-uso do código, arquitecturas de código bem feitas e exclusão de código desnecessário.<br />
<span id="more-978"></span><br />
O weak reference, é uma &#8220;marca&#8221; que se pode atribuir a um evento, que faz com que o GC esteja atento a ele, e se este não for necessário o GC elimina-o&#8230; isto é muito util, visto que um eventListener é algo que usa memória, e por sinal, alguma memória&#8230; Por defeito o GC não elimina Listeners da memória, teriamos que o fazer manualmente usando o removeEventListener, não é que já não precisemos do removeEventListener, mas no caso de nos esquecer-mos de o escrever, o weakreference é uma óptima alternativa porque vai remover o listener automaticamente se este não for mais usado. Basta criarem os vossos eventos assim:</p>
<p>[coolcode]<br />
meuObjecto.addEventListener(MouseEvent.CLICK, minhaFuncaoEscuta, false, 0, true);<br />
[/coolcode]<br />
onde o true indica que o evento deve ser marcado como weak reference, fazendo com que possa ser removido pelo GC. Todos os eventos podem ser considerados como weak references.</p>
<p>O weak reference, infelizmente apenas está disponivel nos eventos e em mais uma class, dictionary, mas que pouca gente usa. Embora tenha encontrado um hack que torna todos os objectos passiveis de serem marcados como wek Reference, este não me convenceu da sua real utilidade. Para quem estiver interessado em testar, veja o post <a href="http://www.bigroom.co.uk/blog/create-your-own-weak-references-in-actionscript-3" target="_blank">aqui</a>.</p>
<p>Outra dica é não deixar elementos soltos, ou seja, se uma variavel ou objecto não são mais necessários, elimine-os marcando-os como null.</p>
<p>Por exemplo:<br />
[coolcode]<br />
private var minhaVar1:Boolean;</p>
<p>minhaVar1=true;<br />
[/coolcode]</p>
<p>Imaginem que apenas precisamos desta variavel uma unica vez, a maior parte das vezes deixa-mo-la assim, usamos e esquecemos a mesma, mas este pensamento está errado, porque apesar de não a usarmos mais, esta vai ficar sempre na memória, e não vai ser eliminada pelo garbage collector porque ela possui um valor&#8230; Mas podemos mudar este habito, e melhorar o desempenho da nossa aplicação, colocando:<br />
[coolcode]<br />
minhaVar1=null;<br />
[/coolcode]<br />
Desta forma a variavel será eliminada da memória pelo GC porque esta não possui nenhum valor.</p>
<p>A principal coisa a ter em mente é nunca esquecer de eliminar código que não seja necessário, eventos ou propriedades&#8230; depende de cada programador faze-lo, considerando sempre essa possibilidade principalmente quando a aplicação têm objectivos comerciais.</p>
<p>Embora existam alguns truques e inclusive um comando para executar o GC, este não aparenta melhorar o desempenho se não tomar-mos algumas das precauções em cima, mas para quem quiser testar a sua utilidade, por exemplo a seguir a alguns addChilds/removeCHild&#8217;s, basta escrever o código seguinte (apenas funciona nas versões debugger do flash e no AIR, nunca entendi porque não funcionam no flash player normal.):<br />
[coolcode]<br />
flash.system.System.gc();<br />
[/coolcode]<br />
ou usar um hack que já o vi funcionar, mas não parece ser muito lógico de usar em aplicações finais:<br />
[coolcode]<br />
private function gcHack():void<br />
{<br />
    try<br />
      {<br />
       var lc1:LocalConnection = new LocalConnection();<br />
       var lc2:LocalConnection = new LocalConnection();<br />
       lc1.connect(&#8216;name&#8217;);<br />
       lc2.connect(&#8216;name&#8217;);<br />
       }<br />
       catch (e:Error) {<br />
       }<br />
}<br />
[/coolcode]<br />
Este código, repetindo o localConnection parece disparar o GC, mas bom&#8230;visto que nao se pode garantir quaisquer vantagens em usa-lo, terá que decidir de o usar ou não.</p>
<p>Bom, espero que seja util.</p>
<p>Cumprimentos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/04/14/flexas3-truques-e-dicas-9-weak-reference-gc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex/AS3 &#8211; Truques e Dicas #7 &#8211; Custom Event</title>
		<link>http://blog.msdevstudio.net/2009/04/07/flexas3-truques-dicas-7-custom-event/</link>
		<comments>http://blog.msdevstudio.net/2009/04/07/flexas3-truques-dicas-7-custom-event/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 09:36:39 +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[Tutoriais]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[comunicação]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[dados]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[eventos]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=929</guid>
		<description><![CDATA[Os custom events podem ser muito uteis quando não queremos estar dependentes dos eventos da aplicação, ou simplesmente para efectuarmos alguma ação em determinada altura commo vou mostrar em baixo. Mas o principal objectivo deste post é mostrar como criar um evento que além de se comportar como tal também servirá para guardar e transferir [...]]]></description>
			<content:encoded><![CDATA[<p>Os custom events podem ser muito uteis quando não queremos estar dependentes dos eventos da aplicação, ou simplesmente para efectuarmos alguma ação em determinada altura commo vou mostrar em baixo. Mas o principal objectivo deste post é mostrar como criar um evento que além de se comportar como tal também <strong>servirá para guardar e transferir dados</strong> que estarão acessiveis na função de escuta quando o evento for disparado.</p>
<p>Vejam um exemplo de um &#8220;custom event&#8221;  normal:</p>
<p>[coolcode]<br />
var customEvent:Event = new Event(&#8220;meuEvento&#8221;);<br />
[/coolcode]</p>
<p>Desta forma, acabamos por ter um evento pessoal chamado <strong>meuEvento</strong> que para o disparar:<br />
[coolcode]<br />
dispatchEvent(customEvent);<br />
//ou directamente:<br />
dispatchEvent(new Event(&#8220;meuEvento&#8221;));<br />
[/coolcode]</p>
<p>Para escutar este evento:<br />
[coolcode]<br />
addEventListener(&#8220;meuEvento&#8221;, minhaFuncaoEvento);</p>
<p>private function minhaFuncaoEvento(evt:Event):void {<br />
//codigo<br />
}<br />
[/coolcode]</p>
<p>Este é o procedimento normal de um custom event.</p>
<p>O meu problema na aplicação era de como passar dados no evento, ou seja, aproveitar um evento para enviar dados, por exemplo de um módulo para outro ou até simplesmente de um itemRender para o seu parent, ou tão simplesmente de um componente para outro. Se pensarmos que todos os eventos são classes, podemos pensar que estas podem ser extendidas, logo podem ser personalizados&#8230; vejamos um evento chamado <strong>meuEvPessoal</strong>:<br />
<span id="more-929"></span><br />
[coolcode]<br />
package<br />
{<br />
	import flash.events.Event;</p>
<p>	public class meuEvPessoal extends Event<br />
	{<br />
		public function meuEvPessoal(type:String, bubbles:Boolean=false, cancelable:Boolean=false)<br />
		{<br />
			super(type, bubbles, cancelable);<br />
		}</p>
<p>	}<br />
}<br />
[/coolcode]</p>
<p>Neste momento temos um evento chamado <strong>meuEvPessoal</strong> derivado da class <strong>Event</strong> o que nos permite chama-lo da mesma forma que um evento:</p>
<p>[coolcode]<br />
import meuEvPessoal;</p>
<p>dispatchEvent(new meuEvPessoal(&#8220;meuEvento&#8221;));</p>
<p>[/coolcode]<br />
E escuta-lo da seguinte forma:</p>
<p>[coolcode]<br />
addEventListener(&#8220;meuEvento&#8221;, minhaFuncaoEvento);</p>
<p>private function minhaFuncaoEvento(evt:meuEvPessoal):void {<br />
//codigo<br />
}<br />
[/coolcode]<br />
A partir de agora é simples, basta adicionar variaveis no nosso evento que elas estarão disponiveis na função que o escuta, vejam o evento:<br />
[coolcode]<br />
package<br />
{<br />
	import flash.events.Event;</p>
<p>	public class meuEvPessoal extends Event<br />
	{<br />
		public var itemID:int=0;<br />
		public var dados1:String=null;<br />
		public var dados2:Boolean=false;</p>
<p>		public function meuEvPessoal(type:String, bubbles:Boolean=false, cancelable:Boolean=false)<br />
		{<br />
			super(type, bubbles, cancelable);<br />
		}</p>
<p>	}<br />
}<br />
[/coolcode]<br />
Neste momento podemos fazer:<br />
[coolcode]<br />
import meuEvPessoal;</p>
<p>var evento:meuEvPessoal = new meuEvPessoal(&#8220;meuEvento&#8221;);<br />
evento.itemID=5;<br />
evento.dados1=&#8221;OLA VINDO DO EVENTO!&#8221;;<br />
evento.dados2=true;<br />
dispatchEvent(evento);<br />
[/coolcode]<br />
Nesta altura o evento é disparado com as variaveis alteradas, pelo que na função de escuta estes dados estão disponiveis:<br />
[coolcode]<br />
addEventListener(&#8220;meuEvento&#8221;, minhaFuncaoEvento);</p>
<p>private function minhaFuncaoEvento(evt:meuEvPessoal):void {<br />
trace(&#8220;Evento Detectado: &#8220;+evt.name);<br />
trace(&#8220;itemID: &#8220;+evt.itemID);<br />
trace(&#8220;dados1: &#8220;+evt.dados1);<br />
trace(&#8220;dados2: &#8220;+evt.dados2);<br />
}<br />
[/coolcode]</p>
<p>E pronto, é isto&#8230; uma dica muito util&#8230; principalmente quando estamos sem saida na hora de passar dados de um componente para o outro, mas existem centenas de casos em que este uso se torna viável.</p>
<p>Espero que seja util.</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/04/07/flexas3-truques-dicas-7-custom-event/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Tutorial &#8211; Flex Alert; Capturando click.</title>
		<link>http://blog.msdevstudio.net/2008/06/20/flex-alert-capturando-click/</link>
		<comments>http://blog.msdevstudio.net/2008/06/20/flex-alert-capturando-click/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 13:04:41 +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[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[captura]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[exemplo]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/06/20/flex-alert-capturando-click/</guid>
		<description><![CDATA[Bem, depois de uma duvida bem colocada no post que mostra como personalizar por completo um alert, com cores, icons, titulo, alpha, texto, etc&#8230;&#160; ( http://msdevstudio.com/blog/2008/02/05/personalizao-do-flex-alert-box-em-action-script/ ) venho agora mostrar um pequeno tutorial como saber qual o botão foi clicado num alert. &#160; Primeiro, temos que compreender as 2 diferentes maneiras de mostrar um alert, [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, depois de uma duvida bem colocada no post que mostra como personalizar por completo um alert, com cores, icons, titulo, alpha, texto, etc&#8230;&nbsp; ( <a title="" href="http://msdevstudio.com/blog/2008/02/05/personalizao-do-flex-alert-box-em-action-script/">http://msdevstudio.com/blog/2008/02/05/personalizao-do-flex-alert-box-em-action-script/</a> ) venho agora mostrar um pequeno tutorial como saber qual o botão foi clicado num alert.
<p>&nbsp;
<p>Primeiro, temos que compreender as 2 diferentes maneiras de mostrar um alert, a segunda maneira é mais complexa, mas mais &#8220;personalizavel&#8221;&#8230; pelo que agora depende principalmente das vossas necessidades.
<p>&nbsp;
<p>A mais simples:</p>
<div style="border-right: gray 1px solid; padding-right: 4px; padding-left: 4px; font-size: 8pt; border-top: gray 1px solid; padding-bottom: 4px; margin: 20px 0px 10px; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4">
<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">import mx.controls.Alert;</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">&nbsp;</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: #008000">//Alert.show("texto","titulo",botões);</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">Alert.show(<span style="color: #006080">"um alerta"</span>,<span style="color: #006080">"com titulo"</span>,Alert.NO | Alert.YES);</pre>
</div>
</div>
<p>&nbsp;</p>
<p>A mais complexa:</p>
<p>&nbsp;</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">import mx.controls.Alert;</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">&nbsp;</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">var meuAlerta:Alert = <span style="color: #0000ff">new</span> Alert;</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">&nbsp;</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">meuAlerta.text=<span style="color: #006080">"um alerta"</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">meuAlerta.title=<span style="color: #006080">"com titulo"</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">meuAlerta.buttonFlags=Alert.NO + Alert.YES;</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">addChild(meuAlerta);</pre>
</div>
</div>
<p>&nbsp;</p>
<p>E voilá! Temos duas maneiras de mostrar os alertas, agora para sabermos que botão foi clicado (ao clicar o botão o Alert fecha e dispara um CloseEvent que no seu parametro .detail &#8220;traz&#8221; a informação do botão clicado, ou seja, para isso temos que escutar esse CloseEvent, fazendo assim:</p>
<p>&nbsp;</p>
<p>na primeira maneira:</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">import mx.controls.Alert;</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">import mx.events.CloseEvent;</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">&nbsp;</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">Alert.show(<span style="color: #006080">"um alerta"</span>,<span style="color: #006080">"com titulo"</span>, Alert.NO | Alert.Yes, <span style="color: #0000ff">null</span>, fechado);</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: #008000">//a função fechado ao ser definida aqui indica ao alert que terá que escutar </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"><font color="#1dbe18">//e chamar a função fechado quando ele for fechado ao clicar de um dos seu botoes</font></pre>
</div>
</div>
<p>&nbsp;</p>
<p>na segunda, basta adicionar antes do addChild() o seguinte:</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">meuAlerta.addEventListener(Event.CLOSE, fechado);</pre>
</div>
</div>
<p>&nbsp;</p>
<p>e finalmente a função que lida com os detalhes do evento close do nosso alerta:</p>
<p>&nbsp;</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: #0000ff">private</span> function fechado(evento:CloseEvent):<span style="color: #0000ff">void</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: #0000ff">if</span>(evento.detail==Alert.YES) <span style="color: #008000">//YES clicado</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: #0000ff">if</span>(evento.detail==Alert.NO) <span style="color: #008000">//NO clicado</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">}</pre>
</div>
</div>
<p>&nbsp;</p>
<p>e está feito&#8230; podem ainda usar:</p>
<p>if(evento.detail==Alert.OK) //ok clicado<br />if(evento.detail==Alert.YES) //YES clicado<br />if(evento.detail==Alert.NO) //NO clicado<br />if(evento.detail==Alert.CANCEL) //CANCEL clicado</p>
<p>&nbsp;</p>
<p>Bem simples, mas espero que seja util a alguém..</p>
<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/06/ccommons13.png"></a>&nbsp;</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/06/20/flex-alert-capturando-click/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

