<?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; events</title>
	<atom:link href="http://blog.msdevstudio.net/tag/events/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 #8 &#8211; Re-use o código!</title>
		<link>http://blog.msdevstudio.net/2009/04/09/flexas3-truques-dicas-8-re-use-o-codigo/</link>
		<comments>http://blog.msdevstudio.net/2009/04/09/flexas3-truques-dicas-8-re-use-o-codigo/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 13:33:01 +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[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 3]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[boas praticas]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[handle]]></category>
		<category><![CDATA[optimização]]></category>
		<category><![CDATA[re-uso]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=967</guid>
		<description><![CDATA[Outro dos bons exemplos que se podem fazer ao criar uma aplicação usando actionscript 3 é a utilização do código, num dos simples exemplos vou mostrar como podemos usar apenas uma função para lidar com 4 ou mais eventos&#8230;e de tipos diferentes! Na minha aplicação, tinha a necessidade de adicionar alguns eventos (inicialmente do rato) [...]]]></description>
			<content:encoded><![CDATA[<p>Outro dos bons exemplos que se podem fazer ao criar uma aplicação usando actionscript 3 é a utilização do código, num dos simples exemplos vou mostrar como podemos usar apenas uma função para lidar com 4 ou mais eventos&#8230;e de tipos diferentes!</p>
<p>Na minha aplicação, tinha a necessidade de adicionar alguns eventos (inicialmente do rato) a um elemento e lidar com os mesmos, muita gente faria, por exemplo ao lidar com 4 eventos do rato numa dataGrid:</p>
<p>[coolcode]<br />
dg.addEventListener(MouseEvent.CLICK, onClick);<br />
dg.addEventListener(MouseEvent.MOUSE_WHEEL onMouseWheel);<br />
dg.addEventListener(MouseEvent.ROLL_OVER, onRollOver);<br />
dg.addEventListener(MouseEvent.ROLL_OUT, onRollOut);<br />
[/coolcode]</p>
<p>O que neste caso teriamos que usar 4 funções diferentes: <strong>onClick</strong>, <strong>onDoubleClick</strong>, <strong>onRollOver</strong>, <strong>onRollOut</strong> do estilo:<br />
[coolcode]<br />
private function onClick(evt:MouseEvent):void { }<br />
private function onMouseWheel(evt:MouseEvent):void { }<br />
private function onRollOver(evt:MouseEvent):void { }<br />
private function onRollOut(evt:MouseEvent):void { }<br />
[/coolcode]</p>
<p>É facil compreender que muita gente use esta forma (eu já usei), mas existe uma forma mais pratica, uma vez que todos os eventos são MouseEvent, podemos fazer apenas uma função:<br />
[coolcode]<br />
dg.addEventListener(MouseEvent.CLICK, onDGMouse);<br />
dg.addEventListener(MouseEvent.MOUSE_WHEEL, onDGMouse);<br />
dg.addEventListener(MouseEvent.ROLL_OVER, onDGMouse);<br />
dg.addEventListener(MouseEvent.ROLL_OUT, onDGMouse);<br />
[/coolcode]<br />
<span id="more-967"></span><br />
e construir apenas uma função em vez de 4, fazend o uso de comparação do tipo de evento:<br />
[coolcode]<br />
private function onDGMouse(evt:MouseEvent):void {<br />
		  switch(evt.type) {<br />
				case MouseEvent.CLICK:<br />
				trace(&#8220;Evento click: &#8220;+evt.type);<br />
				break;</p>
<p>				case MouseEvent.MOUSE_WHEEL:<br />
				trace(&#8220;Evento roda do rato: &#8220;+evt.type);<br />
				break;</p>
<p>				case MouseEvent.ROLL_OVER:<br />
				trace(&#8220;Evento Roll Over: &#8220;+evt.type);<br />
				break;</p>
<p>				case MouseEvent.ROLL_OUT:<br />
				trace(&#8220;Evento Roll Out: &#8220;+evt.type);<br />
				break;</p>
<p>				default:<br />
				Alert.show(&#8220;Evento detectado, nenhuma função associada!: &#8220;+evt.type);<br />
				break;<br />
		   }</p>
<p>		}<br />
[/coolcode]</p>
<p>Como podem ver simplificamos o trabalho e ficamos com o código mais organizado, mas ainda podemos alargar esta função a mais eventos, aliás, a todos os eventos do rato, mas não só&#8230; se mudarmos a declaração da função de<br />
[coolcode]<br />
private function onDGMouse(evt:MouseEvent)<br />
[/coolcode]<br />
para<br />
[coolcode]<br />
private function onDGMouse(evt:*)<br />
[/coolcode]<br />
A nossa função passa a poder receber qualquer tipo de evento, se bem que nem todos os programadores são de acordo em usar este tipo de função &#8220;handler&#8221; de multi-eventos, a verdade é que muitas vezes reduzimos o código em dezenas de linhas e o colocamos bem mais legil, ora vejam como além dos eventos do rato, a mesma função passa a poder receber e lidar com DragEvent&#8217;s ou DataGridEvent&#8217;s:<br />
[coolcode]<br />
private function onDGMouse(evt:*):void {<br />
		  switch(evt.type) {<br />
				case MouseEvent.CLICK:<br />
				trace(&#8220;Evento click: &#8220;+evt.type);<br />
				break;</p>
<p>				case MouseEvent.MOUSE_WHEEL:<br />
				trace(&#8220;Evento roda do rato: &#8220;+evt.type);<br />
				break;</p>
<p>				case MouseEvent.ROLL_OVER:<br />
				trace(&#8220;Evento Roll Over: &#8220;+evt.type);<br />
				break;</p>
<p>				case MouseEvent.ROLL_OUT:<br />
				trace(&#8220;Evento Roll Out: &#8220;+evt.type);<br />
				break;</p>
<p>				case DataGridEvent.COLUMN_STRETCH:<br />
				trace(&#8220;Evento DG :&#8221;+evt.type);<br />
				break;</p>
<p>				case DragEvent.DRAG_ENTER:<br />
				trace(&#8220;Evento DRAG :&#8221;+evt.type);<br />
				break;</p>
<p>				default:<br />
				Alert.show(&#8220;Evento &#8220;+evt.type+&#8221;detectado, nenhuma instrução associada!: &#8220;);<br />
				break;<br />
		   }</p>
<p>		}<br />
[/coolcode]<br />
Neste momento podemos dizer que esta função é valida para lidar com quase qualquer evento, vejam 3 eventos completamente diferentes a usarem a mesma função de &#8220;event handle&#8221;:<br />
[coolcode]<br />
dg.addEventListener(MouseEvent.CLICK, onDGMouse);<br />
dg.addEventListener(DataGridEvent.COLUMN_STRETCH, onDGMouse);<br />
dg.addEventListener(DragEvent.DRAG_ENTER, onDGMouse);<br />
[/coolcode]</p>
<p>Como devem imaginar, pode ser, e é, muito util!!</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/04/09/flexas3-truques-dicas-8-re-use-o-codigo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex Tabs Source Code &#8211; C&#243;digo Fonte</title>
		<link>http://blog.msdevstudio.net/2008/03/25/flex-tabs-source-code-cdigo-fonte/</link>
		<comments>http://blog.msdevstudio.net/2008/03/25/flex-tabs-source-code-cdigo-fonte/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 18:14:20 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Action Scipt]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[artigo]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[eventDispatch]]></category>
		<category><![CDATA[eventListner]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[exemplo]]></category>
		<category><![CDATA[fonte]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[TabContainer]]></category>
		<category><![CDATA[Tabs]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/03/25/flex-tabs-source-code-cdigo-fonte/</guid>
		<description><![CDATA[Depois de um post no fórum flexbrasil, em que um utilizador pedia ajuda para um problema que tinha occorrido ao criar tabs num tab container totalmente em Action Script, no decorrer do esclarecimento decidi criar um exemplo de como perguntar num PopUp ao utilizador quantas tabs novas devem ser criadas, e o &#8220;main stage&#8221; receber [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de um post no fórum flexbrasil, em que um utilizador pedia ajuda para um problema que tinha occorrido ao criar tabs num tab container totalmente em Action Script, no decorrer do esclarecimento decidi criar um exemplo de como perguntar num PopUp ao utilizador quantas tabs novas devem ser criadas, e o &#8220;main stage&#8221; receber esse input e correr a função para criar essas tabs.</p>
<p>Neste exemplo não é só possível usar e perceber o funcionamento dos componentes em action script, mas também variadas boas práticas de programação e observação/utilização de:</p>
<p>-Event Dispatchers (criação de eventos personalizados)</p>
<p>-Event Listners (&#8220;escutar&#8221; um evento personalizado)</p>
<p>-Obter dados de um PopUp no acto de fechar o popUp</p>
<p>-Apresentação e controlo de um PopUp com recurso ao PopUpManager</p>
<p>-Controlo e criação de tabs num TabContainer via action script.</p>
<p>-Funções optimizadas para reaproveitamento de código.</p>
<p>O aplicativo  a correr encontra-se <a target="_blank" href="http://www.msdevstudio.com/blog/flexSource/testTabs">aqui</a> com view source activo.</p>
<p>O código fonte pode ser visto <a target="_blank" href="http://www.msdevstudio.com/blog/flexSource/testTabs/srcview">aqui</a></p>
<p>Será que ajudou alguém?</p>
<p>Espero que sim.</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/03/25/flex-tabs-source-code-cdigo-fonte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

