<?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>MXStudio &#187; Leandro_Nunes</title>
	<atom:link href="http://www.mxstudio.com.br/author/leandro_nunes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mxstudio.com.br</link>
	<description>Macromedia e Adobe - Artigos, colunas, tutorias e muito mais...</description>
	<lastBuildDate>Sun, 29 Jan 2012 11:31:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Objetos Ouvintes (Listeners)</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flash/objetos_ouvintes__listeners_/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flash/objetos_ouvintes__listeners_/#comments</comments>
		<pubDate>Mon, 16 May 2005 00:00:00 +0000</pubDate>
		<dc:creator>Leandro_Nunes</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Quando falamos em ouvintes, estamos falando de um objeto que recebe e de outro que ir&#225; gerar o(s) evento(s).]]></description>
			<content:encoded><![CDATA[<p>&lt;!&#8211; 		* { margin:0; padding:0; border:0; } 		html, body { width:100%; height:100%; } 		#geral { 			font:12px verdana, tahoma, sans-serif; 			margin-left:10px; 			margin-top:5px; 			padding-bottom:25px; 			width:600px;  		} 		h1 { 			font-size:18px; 			font-weight:bold; 		} 		.comment { color:#666; } 		pre { 					font:12px arial, tahoma, sans-serif;&lt;/p&gt; &lt;p&gt;			background:#efefef; 			border-top:1px solid #ccc; 			border-bottom:3px solid #ccc; 			padding-top:10px; 		} 		p { line-height:18px; } 	&#8211;&gt;</p>
<div id="geral">
<h1>Ouvintes (Listeners)</h1>
<p>Olá galera !</p>
<p>Neste artigo, iremos abordar uma função mto legal que nos auxilia quando queremos <em>capturar eventos</em> e executar alguma ação caso este evento seja executado e para isso nós utilizamos os chamados <strong>ouvintes (listeners)</strong>, que são objetos que ficam &#8220;ouvindo&#8221; essas ações e quando elas ocorrem aí sim ele entra em ação e executa a função que definir-mos.<br />
Chega de papo e vamos lá:</p>
<p>Quando falamos em ouvintes, estamos falando de <em>objeto que recebe</em> e de outro <em>objeto que irá gerar</em> o(s) evento(s).</p>
<p><strong>Confira abaixo um código de exemplo onde vamos nos basear no decorrer deste artigo:</strong></p>
<pre>	objetoOuvinte.nomeDoEvento = function(){
	   <span class="comment">// aqui entra o código da função</span>
	};
	objetoAlvo.addListener( objetoOuvinte );</pre>
<p>Está é a sintaxe básica quando vamos adicionar um ouvinte a um ou mais objetos.<br />
O <strong>objetoOuvinte</strong> pode ser qualquer simples objeto, um movieClip ou um botão no Palco do filme.<br />
O <strong>nomeDoEvento</strong> é o evento que acionará a função assim que ele &#8220;acontecer&#8221;.<br />
O <strong>objetoAlvo</strong> é o objeto que foi adicionado um ouvinte e passará as informações ao objetoOuvinte sobre suas ações.</p>
<p>Agora vamos fazer um exemplo prático pra ver como realmente funciona.</p>
<p>No exemplo a seguir, iremos somar um número a cada click do mouse:</p>
<pre>	<span class="comment">// Declaramos uma variável para funcionar como contador</span>
	contador = 0;
	<span class="comment">// Criamos o objeto ouvinte</span>
	var myListener:Object = new Object();
	<span class="comment">// Definimos qual evento será ouvido e qual função executar</span>
	myListener.onMouseUp = function():Void {
	   <span class="comment">// Adicionamos +1 para a variável "contador", o resultado é exibido no output</span>
	   trace( ++contador );
	}
	<span class="comment">// Adicionamos um ouvinte para o objeto "Mouse".
	// Poderia ser: Key, Mouse, MovieClipLoader, Selection, TextField ou Stage.</span>
	Mouse.addListener( myListener );</pre>
<p>Este foi um exemplo simples, porém acredito que fica facilmente entendido o que é cada coisa e para que serve.<br />
Agora vou colocar um código que utilizo bastante em formulários feitos em flash, onde queremos que seja <em>enviado</em> ao pressionar a tecla <strong>ENTER</strong>, assim como acontece no HTML naturalmente.<br />
Vejamos:</p>
<pre>	<span class="comment">// Objeto ouvinte</span>
	var $listener:Object = new Object();
	<span class="comment">// Executar assim que a tecla for despressionada</span>
	$listener.onKeyUp = function():Void {
	   <span class="comment">// Pega o foco da seleção (onde o cursor está)</span>
	   $foco = Selection.getFocus().substr( Selection.getFocus().indexOf(".")+1, Selection.getFocus().length );
	   <span class="comment">// Pega o código da tecla pressionada</span>
	   $key = Key.getCode();
	   <span class="comment">// Verifica se a tecla pressionada é o ENTER</span>
	   if( $key == 13 ) {
	      <span class="comment">// Aqui é definido os campos do formulário onde a pessoa esteja com o cursor e pressione
	      // o ENTER e seja enviado o formulário</span>
	      var $campos:Array = new Array( "nome", "email" );
	      for( var $i:Number=0; $campos[$i]; $i++ ) {
	         <span class="comment">// Um loopzinho para verificar se o campo q ele está com o cursor é um dos campos
	         // onde agente quer q seja enviado o formulário caso pressionado ENTER</span>
	         if( $foco eq $campos[$i] ) {
	            <span class="comment">// enviaFormulario é o nome da função que enviará os dados</span>
	            enviaFormulario();
	            break;
	         }
	      }
	   }
	}
	<span class="comment">// Adicionamos o objeto ouvinte ao objeto Key</span>
	Key.addListener( $listener );</pre>
<p>Bom, é isso aí pessoal.<br />
Postem se gostaram, se acharam suficiente ou não e se tiver alguma dúvida, sinta-se a vontade de entrar em contado com qualquer um dos colunistas e moderadores <img src='http://www.mxstudio.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Abraços</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flash/objetos_ouvintes__listeners_/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trabalhando com Erros</title>
		<link>http://www.mxstudio.com.br/desenvolvimento/flash/trabalhando_com_erros/</link>
		<comments>http://www.mxstudio.com.br/desenvolvimento/flash/trabalhando_com_erros/#comments</comments>
		<pubDate>Wed, 09 Mar 2005 00:00:00 +0000</pubDate>
		<dc:creator>Leandro_Nunes</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Vou falar brevemente sobre como depurar erros para fazer um tratamento amig&#225;vel ao usu&#225;rio final e para isso utilizarei dois comandos que temos na vers&#227;o MX 2004 do Flash: Uma &#233; a classe Error e o outro &#233; a fun&#231;&#038;a]]></description>
			<content:encoded><![CDATA[<p>&lt;!&#8211; @import url(&#8220;http://www.mxstudio.com.br/_colunistas/css_coluna.css&#8221;); .S1 {	font-weight: bold; 	font-family: Verdana; 	color: #FF00FF; 	font-size: 10pt; } .S10 {	font-weight: bold; 	color: #990000; } .S16 {	color: #0000FF; } .S17 {	color: #FF0000; } .S2 {	font-weight: bold; 	font-family: Verdana; 	color: #FF00FF; 	font-size: 10pt; } .S5 {	font-weight: bold; 	color: #000099; } .S6 {	color: #666666; } .codigo {			background:#efefef; 			padding-left:5px; 			margin-top:5px; 			margin-bottom:10px; } .explica {margin-left:25px; } .finaliza {margin-top:20px; } .output {			font:12px verdana; 			color:#666; 			margin-left:0px; } .style6 {font-size: 20px} &#8211;&gt;</p>
<table border="0" cellspacing="0" cellpadding="0" width="620">
<tbody>
<tr>
<td width="620">
<h1 class="style6">Título: Trabalhando com Erros!</h1>
<p>Olá, este é minha primeira coluna publicada aqui no MX Studio, então após lerem, gostaria que comentassem o que acharam e o que melhorar. Obrigado!<br />
Chega de conversa e vamos lá.</p>
<p>Vou falar brevemente sobre como depurar erros para fazer um tratamento amigável ao usuário final e para isso utilizarei dois comandos que temos na versão MX 2004 do Flash: Uma é a <strong>classe Error</strong> e o outro é a função <strong>try..catch..finally</strong></p>
<h2>Classe Error</h2>
<h3>Como usar</h3>
<p class="explica">new Error([mensagem de erro:String]) : Error</p>
<h3>Parâmetros</h3>
<p class="explica">message String associada ao objeto Error; Este parâmetro é opcional.</p>
<h3>Retorno</h3>
<p class="explica">Referência ao objeto Error.</p>
<h3>Descrição</h3>
<p class="explica">Cria um objeto Error. Se uma mensagem é associada, este valor é associado a propriedade message do objeto Error.message.</p>
<h3>Exemplos</h3>
<ol>
<li> erroVar = new Error();
<p class="output">trace( erroVar ); //Output -&gt; Error</p>
</li>
<li> erroVar = new Error( &#8220;Mensagem de erro&#8221; );
<p class="output">trace( erroVar ); //Output -&gt; Mensagem de erro</p>
</li>
</ol>
<h2>Try..Catch..Finally</h2>
<h3>Como usar</h3>
<pre>	try {
	  // ... código aqui ...
	} finally {
	  // ... código aqui ...
	}

	try {
	  // ... código aqui ...
	} catch( error[:ErrorType1] ) {
	  // ... código aqui ...
	} [catch( error[:ErrorTypeN] ) {
	  // ... código aqui ...
	}] [finally {
	  // ... código aqui ...
	}]</pre>
<h3>Parâmetros</h3>
<p class="explica"><strong>error</strong> A expressão jogada numa indicação throw, normalmente uma instância da classe Error ou uma de suas subclasses.<br />
<strong>ErrorType</strong> Um tipo opcional especificado para o identificador error. A clausula catch pega apenas os erros do tipo especificado.</p>
<h3>Descrição</h3>
<p class="explica">No <strong>try</strong> tu faz uma verificação por exemplo, aí no <strong>cath</strong> tu pega o erro (caso este exista), e o <strong>finally</strong> é executado <strong>SEMPRE</strong>, existindo erro ou não.</p>
<h3>Exemplos</h3>
<ol>
<li> Neste exemplo vamos fazer uma verificação e preparar um erro para a situação verificada:
<pre class="codigo">function verificaMaior(val1:Number, val2:Number):Void {
	if( val1 &gt; val2 ) mensagem = "Valor 1 é maior";
	else if( val2 &gt; val1 ) mensagem = "Valor 2 é maior";

	if( mensagem != undefined ) throw new Error( mensagem );

	// Observação:
	// Qualquer coisa daki pra baixo (dentro desta função) será ignorado
 caso o throw new Error seja definido, pois ele entende que
	// aconteceu um erro e para de executar a função.
}

try {
	verificaMaior( 5, 2 );
} catch ( e:Error ) {
	trace( "catch: " + e );
	<span class="output">// Output -&gt; catch: Valor 1 é maior</span>
} finally {
	trace( "finally: " + e.name );
	<span class="output">// Output -&gt; finally: Valor 1 é maior</span>
}

Neste caso, passa pelo Catch e pelo Finally, pois o erro foi definido.</pre>
</li>
<li>
<pre class="codigo">try {
	verificaMaior( 2, 5 );
} catch ( e:Error ) {
	trace( "catch: " + e );
	<span class="output">// Output -&gt; catch: Valor 2 é maior</span>
} finally {
	trace( "finally: " + e.name );
	<span class="output">// Output -&gt; finally: Valor 2 é maior</span>
}

Neste caso continua passando pelo Catch e pelo Finally, pois o erro
também foi definido.</pre>
</li>
<li>
<pre class="codigo">try {
	verificaMaior( 5, 5 );
} catch ( e:Error ) {
	trace( "catch: " + e );
	<span class="output">// Este pedaço não é executado, pois não foi definido um erro.</span>
} finally {
	trace( "finally: " + e.name );
	<span class="output">// Output -&gt; finally: undefined</span>
}

Neste caso, não passa pelo catch (pois não foi definido o erro),
porém no finally, SEMPRE é executado, porém como não tem o erro,
ele exibe undefined.</pre>
</li>
</ol>
<p><strong>Resumindo:</strong> com o trhow new Error, tu define uma mensagem de erro para futuramente utilizar o comando try e catch executando uma função e pegando o erro que ela retorna, com isso tu consegue definir os erros e poderá tratar isso mais facilmente e exibir algo mais compreensível ao usuário e deixar suas aplicações mais amigáveis.</p>
<p class="finaliza">É isso aí, espero ter ajudado com este material e em breve muitos outros estarão disponíveis.<br />
[]&#8216;s<br />
Leandro Nunes &#8220;dr1nks</p>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/desenvolvimento/flash/trabalhando_com_erros/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

