<?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; Flash</title>
	<atom:link href="http://www.mxstudio.com.br/categoria/flash/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>Fri, 19 Mar 2010 16:58:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- google_ad_section_start -->	<item>
		<title>Papervision 3D: Primeiros Passos</title>
		<link>http://www.mxstudio.com.br/flash/papervision-3d-primeiros-passos/</link>
		<comments>http://www.mxstudio.com.br/flash/papervision-3d-primeiros-passos/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 13:30:39 +0000</pubDate>
		<dc:creator>Marcio Silva</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Papervision3d]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=3330</guid>
		<description><![CDATA[

Olá Pessoal,
Sou Márcio Silva, e neste tutorial mostrarei os primeiros passos para que você possa começar a desenvolver seus aplicativos, jogos e animações utilizando o Papervision3D Engine.
Pré-requisitos:  Conhecimento em Action Script 3.0.  Conhecimento em Adobe Flash CS4.
O que é Papervision 3D?
Papervision 3D (P3D) é uma Engine Open Source para criação de Cenas 3D [...]]]></description>
			<content:encoded><![CDATA[<link href="http://www.mxstudio.com.br/webgerenciador/_css/PadraoCss.css" rel="stylesheet" type="text/css" />
<script src="http://www.mxstudio.com.br/js/ColorCode.js"></script></p>
<p style="text-align: justify;">Olá Pessoal,</p>
<p style="text-align: justify;">Sou Márcio Silva, e neste tutorial mostrarei os primeiros passos para que você possa começar a desenvolver seus aplicativos, jogos e animações utilizando o Papervision3D Engine.</p>
<p style="text-align: justify;">Pré-requisitos:  Conhecimento em Action Script 3.0.  Conhecimento em Adobe Flash CS4.</p>
<p style="text-align: justify;"><strong>O que é Papervision 3D?</strong></p>
<p style="text-align: justify;">Papervision 3D (P3D) é uma Engine Open Source para criação de Cenas 3D no Adobe Flash. Com esta engine podemos manipular de uma forma simplificada elementos 3D, escondendo detalhes de baixo nível. Esta engine não realiza cálculos físicos, como por exemplo gravidade, atrito, colisão elástica e inelástica, entre outros. Para isto é necessário a utilização de outras engines destinadas apenas a realizar cálculos físicos, isto será tema de outros tutoriais.</p>
<p style="text-align: justify;"><strong>Como começar?</strong></p>
<p style="text-align: justify;">Como escrevi nos pré-requisitos, é indispensável o conhecimento de básico ao intermediário no Action Script 3.0. A API do P3D é totalmente orientada a objetos e possui uma documentação de código muito boa. Neste tutorial, utilizo como ferramenta o Adobe Flash CS4 para programar e rodar a aplicação.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>Passo 1</strong> &#8211; Primeiramente você deve baixar o P3D que está hospedado no Google Code: <a href="http://code.google.com/p/papervision3d/">http://code.google.com/p/papervision3d/</a>.</p>
<p style="text-align: justify;"><strong>Passo 2 &#8211; </strong>Crie um pasta com o nome de sua escolha e descompacte o conteúdo do arquivo <strong>.ZIP</strong> .</p>
<p style="text-align: justify;"><strong>Passo 3 </strong>- Abra o Adobe Flash CS4, e crie um novo arquivo <strong>.FLA </strong>do tipo AS3 com o nome <strong>PlaneP3D.fla. </strong>Coloque as seguintes configurações:</p>
<p style="text-align: justify;"><a href="http://www.mxstudio.com.br/wp-content/uploads/2010/03/img3.png"><img src="http://www.mxstudio.com.br/wp-content/uploads/2010/03/img3.png" alt="Configurações" title="Configurações" width="199" height="263" class="alignnone size-full wp-image-3332" /></a></p>
<p style="text-align: justify;"><strong>Passo 4 &#8211; </strong>Para que o Adobe Flash encontre as definições de classe do Papervision 3D é necessário configurar o Library Path. Vá em <strong>Edit-&gt;Preferencces-&gt;Action Script, </strong>clique em <strong>ActionScript 3.0 Settings. </strong>Informe o diretório onde você descompactou o Papervision 3D. No meu caso ficou como mostrado abaixo:</p>
<p style="text-align: justify;"><a href="http://blog.creativerender.com/wp-content/uploads/2010/03/img2.png"><img class="aligncenter size-full wp-image-49" title="Classpath" src="http://blog.creativerender.com/wp-content/uploads/2010/03/img2.png" alt="" width="451" height="530" /></a></p>
<p style="text-align: justify;"><strong>Passo 5 &#8211; </strong>Crie um Action Script File (<strong>.AS</strong>) com o nome de <strong>PlaneP3D.as</strong>.<strong> </strong></p>
<p style="text-align: justify;"><strong> </strong> <strong>Passo 6 &#8211; </strong>No arquivo <strong>PlaneP3D.as </strong>coloque o seguinte código.</p>
<div id="codigo" title="AS">
package<br />
{<br />
	import flash.display.Sprite;<br />
	import flash.events.Event;<br />
	import org.papervision3d.cameras.Camera3D;<br />
	import org.papervision3d.render.BasicRenderEngine;<br />
	import org.papervision3d.scenes.Scene3D;<br />
	import org.papervision3d.view.Viewport3D;<br />
	import org.papervision3d.objects.primitives.Plane;</p>
<p>	public class Plane extends Sprite<br />
	{<br />
		public var viewport:Viewport3D = new Viewport3D();<br />
		public var scene:Scene3D = new Scene3D();<br />
		public var camera:Camera3D = new Camera3D();<br />
		public var renderer:BasicRenderEngine = new BasicRenderEngine();<br />
		public var plane:Plane = new Plane();</p>
<p>		public function Plane()<br />
		{<br />
			addChild(viewport);<br />
			scene.addChild(plane);<br />
			renderer.renderScene(scene, camera, viewport);<br />
			addListeners ();<br />
		}</p>
<p>		private function addListeners ()<br />
		{<br />
			addEventListener(Event.ENTER_FRAME, render);<br />
		}</p>
<p>		private function render (e:Event)<br />
		{<br />
			plane.x +=3;<br />
			renderer.renderScene(scene, camera, viewport);<br />
		}<br />
	}<br />
}</p></div>
<p><strong>Alguns comentários sobre o código</strong></p>
<p><strong>O que é Viewport3D?</strong></p>
<p>Para explicar o que é a Viewport3D, só fazer uma analogia à tela de cinema, onde é projetado o filme para que seja possível assistí-lo. Portanto, é uma região retangular onde é projetado a Cena 3D.</p>
<p><strong>O que é uma Camera3D?</strong></p>
<p><strong> </strong>A Camera utilizada aqui é a mesma que você já conhece do cinema, ela grava o que acontece no mundo e projeta na tela (View Port).</p>
<p><strong>O que é Scene3D?</strong></p>
<p>A Cena 3D é basicamente o mundo que se deseja ver.</p>
<p><strong>O que é BasicRenderEngine?</strong></p>
<p>Fazendo novamente analogia ao cinema,  o Basic Render Engine é o Diretor, ele grita &#8220;Ação&#8221; e tudo acontece: A Camera começa a filmar, projetando a Cena na View Port. Por isso nada acontece se ele não &#8220;ordenar&#8221; através do método <em>renderScene ().</em></p>
<p>O Construtor da classe <strong>Plane </strong>dá o pontapé inicial adicionando a <strong>View Port </strong>ao stage, pois o restante dos objetos serão renderizados dentro dela. Todos os objetos pertencentes à Cena, neste caso o Plano, devem ser adicionados ao objeto <strong>scene. </strong>Como nesta cena o plano será deslocado para a direita à cada <strong>ENTER_FRAME</strong>, um listener foi adicionado.</p>
<p>Pronto, se você não pressionou <strong>CTRL + ENTER </strong>para ver o que acontece, pressione agora e veja o resultado.</p>
<p>Veja o resultado final aqui <a href="http://blog.creativerender.com/wp-content/uploads/2010/03/PlaneP3D.swf">PlaneP3D</a>.</p>
<p>Baixe os arquivos deste tutorial: <a href="http://blog.creativerender.com/wp-content/uploads/2010/03/papervision_beginner.zip" target="_blank">http://blog.creativerender.com/wp-content/uploads/2010/03/papervision_beginner.zip</a></p>
<p><strong>Autor: M&aacute;rcio Silva &#8211; Colunista de Flash &amp; ActionSctipt MXSTUDIO.</strong><br />
Site: <a href="http://www.creativerender.com" target="_blank">www.creativerender.com</a> e <a href="http://www.marciosilva.net" target="_blank">www.marciosilva.net</a>
</p>
<p>Qualquer d&uacute;vida envie um e-mail para <a href="mailto:contato@creativerender.com" target="new">contato@creativerender.com</a> ou acesse nosso <a href="http://www.mxstudio.com.br/forum/index.php?showforum=127" target="forum">f&oacute;rum</a></p>
<p><script>FormatAS(new Array('AS'))</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/papervision-3d-primeiros-passos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slide Itens em Actionscript 3.0</title>
		<link>http://www.mxstudio.com.br/flash/slide-itens-em-actionscript-3-0/</link>
		<comments>http://www.mxstudio.com.br/flash/slide-itens-em-actionscript-3-0/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 17:49:34 +0000</pubDate>
		<dc:creator>Lucas_marcal</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2880</guid>
		<description><![CDATA[Salve
pessoal, durante muito tempo em uma determinada agência que eu
trabalhei eu utilizei essa classe (ainda em Actionscript 2.0) para
apresentar produtos, imagens, noticias etc&#8230;
Por esse motivo decidi fazer uma versão dela para Actionscript 3.0
espero que ela possa ser útil á você nos seus trabalhos assim como ela
foi muito útil para mim!
Lembre-se siga-me no Twitter &#60;a href=&#8221;http://www.twitter.com/lmcosta&#8220;&#62;@lmcosta&#60;/a&#62;
Classe [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: 'Lucida Grande',Verdana,Arial,'Bitstream Vera Sans',sans-serif; font-size: 13px; line-height: 19px; white-space: pre-wrap;">Salve<br />
pessoal, durante muito tempo em uma determinada agência que eu<br />
trabalhei eu utilizei essa classe (ainda em Actionscript 2.0) para<br />
apresentar produtos, imagens, noticias etc&#8230;<br />
Por esse motivo decidi fazer uma versão dela para Actionscript 3.0<br />
espero que ela possa ser útil á você nos seus trabalhos assim como ela<br />
foi muito útil para mim!<br />
Lembre-se siga-me no Twitter &lt;a href=&#8221;<a href="http://www.twitter.com/lmcosta" target="_blank">http://www.twitter.com/lmcosta</a>&#8220;&gt;@lmcosta&lt;/a&gt;</p>
<p>Classe FullSlide.as<br />
[sourcecode language="actionscript3" firstline="8" highlight="10,11" padlinenumbers="false" wraplines="false" gutter="false"]<br />
package lmcosta.slide<br />
{<br />
import flash.display.MovieClip;<br />
import flash.events.Event;<br />
import flash.events.MouseEvent;<br />
import gs.*;<br />
import gs.easing.*;</p>
<p>/**<br />
* &#8230;<br />
* @author  <span>Lucas</span> <span>Marçal</span><br />
* @link    <a href="http://www.lucasmarcal.com.br/blog" target="_blank">www.lucasmarcal.com.br/blog</a><br />
* @see     <a href="http://tweener.googlecode.com/svn/trunk/examples/" target="_blank">http://tweener.googlecode.com/svn/trunk/examples/</a><br />
* @version 1.0<br />
* @usage<br />
*  import lmcosta.slide.FullSlide<br />
var mySlide:FullSlide = new FullSlide();<br />
addChild(this.mySlide);<br />
var _arr:Array =  new Array(mc1,mc2,mc3,mc4,mc5);<br />
var btSlideX:MovieClip;<br />
var btSlideY:MovieClip;<br />
this.btVai.addEventListener(MouseEvent.MOUSE_DOWN , clickVai);<br />
this.btVem.addEventListener(MouseEvent.MOUSE_DOWN , clickVem);<br />
function clickVai (e:MouseEvent):void<br />
{<br />
e.target.parent.parent.mySlide.moveItens(1);<br />
}<br />
function clickVem (e:MouseEvent):void<br />
{<br />
e.target.parent.parent.mySlide.moveItens(-1);<br />
}<br />
*/<br />
public class FullSlide extends MovieClip<br />
{<br />
/**<br />
* DEFININDO PROPRIEDADES<br />
*/<br />
public var itensMc:Array;<br />
public var tipoSlide:String;<br />
public var posX:Number;<br />
public var posY:Number;<br />
public var distanciaItens:Number;<br />
public var distanciaItensFoco:Number;<br />
public var tempoEase:Number;<br />
public var distancia:Number;<br />
public var itemAtual:Number;<br />
public var itemX:Number;<br />
public var itemY:Number;</p>
<p>public function FullSlide()<br />
{<br />
trace(&#8221;Iniciou&#8221;)<br />
}<br />
/**<br />
*<br />
* @param	tipo:            Tipo de alinhamento X ou Y<br />
* @param	arr :            Array que contém os MovieClips<br />
* @param	distancia:       Distancia dos MovieClips na hora do alinhamento<br />
* @param	foco:            Distancia que o item deve se mover<br />
* @param	indiceAtual:     MovieClip Atual<br />
* @param	posicaoX:        Posição em X<br />
* @param	posicaoY:        Posição em Y<br />
*/<br />
public function setSlide(tipo:String,arr:Array,distancia:Number, foco:Number,indiceAtual:Number,posicaoX:Number,posicaoY:Number):void<br />
{<br />
this.tipoSlide = tipo;<br />
this.itensMc = arr;<br />
this.itemAtual = indiceAtual;<br />
this.distanciaItens = distancia;<br />
this.distanciaItensFoco = foco;<br />
this.posX = posicaoX;<br />
this.posY = posicaoY;<br />
this.tempoEase = 0.5;<br />
setPosItens();<br />
}</p>
<p>private function setPosItens():void<br />
{</p>
<p>for (var i:Number = 0; i &lt; this.itensMc.length; i++)<br />
{<br />
if (this.tipoSlide == &#8220;Y&#8221;)<br />
{<br />
this.distancia = this.itemAtual &#8211; i;<br />
this.itemY = this.posY + (this.distancia * &#8211; this.distanciaItens);<br />
this.itensMc[i].x = Math.round(this.posX);<br />
if (this.distancia != 0)<br />
{<br />
this.itemY += (Math.round(this.distanciaItensFoco) &#8211; Math.round(this.distanciaItens)) * (Math.round(this.distancia) &gt; 0 ? -1 : +1);<br />
}<br />
TweenMax.to(this.itensMc[i], this.tempoEase, {y:Math.round(this.itemY),ease:Expo.easeOut});<br />
}<br />
else<br />
{<br />
this.distancia = this.itemAtual &#8211; i;<br />
this.itemX = this.posX + (this.distancia * &#8211; this.distanciaItens);<br />
this.itensMc[i].y = Math.round(this.posY);<br />
if (this.distancia != 0)<br />
{<br />
this.itemX += (Math.round(this.distanciaItensFoco) &#8211; Math.round(this.distanciaItens)) * (Math.round(this.distancia) &gt; 0 ? -1 : +1);<br />
}<br />
TweenMax.to(this.itensMc[i], this.tempoEase, {x:Math.round(this.itemX),ease:Expo.easeOut});<br />
}<br />
if(i &#8211; this.itensMc.length != 1)<br />
{<br />
TweenMax.to(this.itensMc[i], this.tempoEase, { blurFilter: { blurX:10, blurY:10, quality:1 }, z:1 } );<br />
}<br />
if (this.tempoEase &gt; 0)<br />
{<br />
TweenMax.to(this.itensMc[this.itemAtual], this.tempoEase/2, {blurFilter:{blurX:0,blurY:0, quality:2},z:1});<br />
}<br />
var refItem:MovieClip = this.itensMc[i] as MovieClip;<br />
refItem.buttonMode = true;<br />
refItem.addEventListener(MouseEvent.MOUSE_DOWN , onDown);<br />
refItem.addEventListener(MouseEvent.MOUSE_OVER , onOver);<br />
refItem.addEventListener(MouseEvent.MOUSE_OUT , onOut);<br />
refItem.nome = i;<br />
}<br />
}</p>
<p>private function onOut(e:Event):void<br />
{<br />
TweenMax.to(e.target, 0.2, { tint:null, ease:Linear.easeNone } );<br />
}</p>
<p>private function onOver(e:Event):void<br />
{<br />
TweenMax.to(e.target, 0.2, { tint:0xcccccc, ease:Linear.easeNone } );<br />
}</p>
<p>public function onDown(e:Event):void<br />
{<br />
trace(&#8221;item &#8221; + e.target.nome);<br />
this.setItens(e.target.nome)<br />
}<br />
/**<br />
* @param	indice<br />
*/<br />
public function moveItens(indice:Number):void<br />
{<br />
this.setItens(this.itemAtual + indice);<br />
}<br />
/**<br />
* @param	indice<br />
*/<br />
public function setItens(indice:Number):void<br />
{</p>
<p>if (indice &lt; 0) indice = 0;<br />
if (indice &gt; this.itensMc.length &#8211; 1) indice = this.itensMc.length &#8211; 1;<br />
if (indice != this.itemAtual)<br />
{<br />
this.itemAtual = indice;<br />
this.setPosItens();<br />
}<br />
}</p>
<p>}</p>
<p>}<br />
[/sourcecode]<br />
&lt;a href=&#8221;<a href="http://www.lucasmarcal.com.br/labs/FullSlide.html" target="_blank">http://www.lucasmarcal.com.br/labs/FullSlide.html</a>&#8220;&gt;Exemplo&lt;/a&gt;<br />
&lt;a href=&#8221;<a href="http://www.lucasmarcal.com.br/labs/FullSlide.rar" target="_blank">http://www.lucasmarcal.com.br/labs/FullSlide.rar</a>&#8220;&gt;Arquivos do Tutorial&lt;/a&gt;</p>
<p>Abraço a todos, semana que vem tem mais!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/slide-itens-em-actionscript-3-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Validando Campos de formulário no Actionscript 3.0</title>
		<link>http://www.mxstudio.com.br/flash/validando-campos-de-formulario-no-actionscript-3-0/</link>
		<comments>http://www.mxstudio.com.br/flash/validando-campos-de-formulario-no-actionscript-3-0/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 17:48:11 +0000</pubDate>
		<dc:creator>Lucas_marcal</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2878</guid>
		<description><![CDATA[Salve Pessoal
No meu primeiro artigo sobre Actionscript 3.0 eu mostro uma classe que eu fiz para validar campos de formularios.
[coolcode lang="actionscript"]
/**
* @autor: Lucas Marçal
* @email: inbox@lucasmarcal.com.br
* @date:  15/05/2009
* @coment: para adicionar um evento ao modificar o conteudo do campo
* de texto registrar o evento
* textInput.addEventListener(Event.CHANGE,clicou);
* public function clicou (e:Event)
{
//trace(&#8221;Mudando&#8221;)
}
* */
package owinteractive.utils
{
import flash.display.MovieClip;
import flash.events.FocusEvent;
import flash.text.TextField;
import [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: 'Lucida Grande',Verdana,Arial,'Bitstream Vera Sans',sans-serif; font-size: 13px; line-height: 19px; white-space: pre-wrap;">Salve Pessoal<br />
No meu primeiro artigo sobre Actionscript 3.0 eu mostro uma classe que eu fiz para validar campos de formularios.</p>
<p>[coolcode lang="actionscript"]<br />
/**<br />
* @autor: <span>Lucas</span> <span>Marçal</span><br />
* @email: <a href="mailto:inbox@lucasmarcal.com.br" target="_blank">inbox@lucasmarcal.com.br</a><br />
* @date:  15/05/2009<br />
* @coment: para adicionar um evento ao modificar o conteudo do campo<br />
* de texto registrar o evento<br />
* textInput.addEventListener(Event.CHANGE,clicou);<br />
* public function clicou (e:Event)<br />
{<br />
//trace(&#8221;Mudando&#8221;)<br />
}<br />
* */<br />
package owinteractive.utils<br />
{<br />
import flash.display.MovieClip;<br />
import flash.events.FocusEvent;<br />
import flash.text.TextField;<br />
import gs.easing.*<br />
import gs.*</p>
<p>public class Validation extends MovieClip<br />
{<br />
public var textInput:   TextField;<br />
public var tipo:        String;<br />
public  var textStatus:  Boolean;<br />
public var textOutput:  TextField;<br />
public var textName:    String;<br />
public var mcStatus:    MovieClip;<br />
public var limpar:      Boolean;</p>
<p>public function Validation (_txtCamp:TextField,_type:String,_txtResp:TextField,_txtName:String,_mcStatus:MovieClip,_clear:Boolean):void<br />
{<br />
this.textInput = _txtCamp;<br />
this.tipo = _type;<br />
this.textStatus = false;<br />
this.textOutput = _txtResp;<br />
this.textName = _txtName;</p>
<p>if (_mcStatus != null)<br />
{<br />
this.mcStatus = _mcStatus;<br />
}<br />
this.limpar = _clear;<br />
this.textInput.addEventListener(FocusEvent.FOCUS_IN, onIn);<br />
this.textInput.addEventListener(FocusEvent.FOCUS_OUT,onOut);<br />
}</p>
<p>public function onIn(f:FocusEvent):void<br />
{<br />
//trace(&#8221;Selecionou &#8221; + <a href="http://f.target.name/" target="_blank">f.target.name</a>)<br />
if (this.limpar == true)<br />
{<br />
f.target.text = &#8220;&#8221;<br />
}<br />
else<br />
{<br />
trace(&#8221;Não Limpar campo&#8221;)<br />
}<br />
}</p>
<p>public function onOut(f:FocusEvent):void<br />
{<br />
if(this.tipo == &#8220;email&#8221;)<br />
{<br />
this.emailValidation(f)<br />
}<br />
else<br />
{<br />
this.textValidation(f)<br />
}<br />
}</p>
<p>public function textValidation(t:*):void<br />
{<br />
if(t.target.text == &#8220;&#8221;)<br />
{<br />
//trace(&#8221;Campo Vazio&#8221;)<br />
this.textStatus = false<br />
this.textOutput.text = &#8220;Preencher o campo &#8221; + this.textName<br />
if (this.mcStatus != null)<br />
{<br />
this.mcStatus.gotoAndStop(3)<br />
}<br />
}<br />
else<br />
{<br />
//trace(&#8221;Campo Preenchido&#8221;)<br />
this.textStatus = true<br />
if (this.mcStatus != null)<br />
{<br />
this.mcStatus.gotoAndPlay(2)<br />
TweenMax.to(this.mcStatus, 0.5, { alpha:0, ease:Linear.easeNone,delay:2,onComplete:retornaStatus} );<br />
}</p>
<p>}<br />
}<br />
public function emailValidation(t:*):void<br />
{<br />
var email:String = t.target.text;<br />
var arroba:Number = email.indexOf(&#8221;@&#8221;);<br />
var ponto:Number = email.lastIndexOf(&#8221;.&#8221;);<br />
var resp:Boolean = arroba &gt; 0 &amp;&amp; ponto &gt; arroba;</p>
<p>if(resp == true)<br />
{<br />
//trace(&#8221;Email Correto&#8221;)<br />
this.textStatus = true<br />
if (this.mcStatus != null)<br />
{<br />
this.mcStatus.gotoAndStop(2);<br />
TweenMax.to(this.mcStatus, 0.5, { alpha:0, ease:Linear.easeNone,delay:2,onComplete:retornaStatus} );<br />
}</p>
<p>}<br />
else<br />
{<br />
//trace(&#8221;Preencher corretamente&#8221;)<br />
this.textStatus = false<br />
this.textOutput.text = &#8220;Campo &#8221; + this.textName + &#8221; incorreto&#8221;<br />
if (this.mcStatus !=  null)<br />
{<br />
this.mcStatus.gotoAndStop(3)<br />
}</p>
<p>}<br />
}</p>
<p>public function getTextStatus():Boolean<br />
{<br />
return textStatus<br />
}<br />
public function retornaStatus():void<br />
{<br />
if (this.mcStatus != null)<br />
{<br />
this.mcStatus.gotoAndStop(1);<br />
this.mcStatus.alpha = 1<br />
}</p>
<p>}</p>
<p>}<br />
}<br />
[/coolcode]</p>
<p>Abraço a todos</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/validando-campos-de-formulario-no-actionscript-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Galeria de Imagens com XML e LightBox</title>
		<link>http://www.mxstudio.com.br/flash/galeria-de-imagens-com-xml-e-lightbox/</link>
		<comments>http://www.mxstudio.com.br/flash/galeria-de-imagens-com-xml-e-lightbox/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 00:19:12 +0000</pubDate>
		<dc:creator>Natan D. Alves</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[ActionScript 2]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[FlashLightBox]]></category>
		<category><![CDATA[LightBox]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2779</guid>
		<description><![CDATA[Olá comunidade.
Neste tutorial, irei mostrar a vocês como criar uma Galeria de Imagens com XML no Flash utilizando o efeito LightBox presente em algumas páginas HTML. Os requisitos para esse tutorial são:

Flash 8, Flash CS3 ou Flash CS4
Conhecimento com interação do Flash com XML
Componente FlashLightBox

Criando o XML
Vamos começar criando o XML. O arquivo XML irá [...]]]></description>
			<content:encoded><![CDATA[<p>Olá comunidade.</p>
<p>Neste tutorial, irei mostrar a vocês como criar uma Galeria de Imagens com XML no Flash utilizando o efeito LightBox presente em algumas páginas HTML. Os requisitos para esse tutorial são:</p>
<ul>
<li>Flash 8, Flash CS3 ou Flash CS4</li>
<li>Conhecimento com interação do Flash com XML</li>
<li>Componente FlashLightBox</li>
</ul>
<h2>Criando o XML</h2>
<p>Vamos começar criando o XML. O arquivo XML irá conter o nome das imagens e a legenda que será exibida. Tanto o arquivo XML quanto as imagens precisam estar no mesmo diretório do arquivo FLA do Flash. Salvem o XML com o nome de <strong>imagens.xml</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="xml xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagens<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Moto Ayrton Senna<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem1.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Mclaren do Senna<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem2.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Capacete Senna<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem3.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Ferrari Shumacher<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem4.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Loro<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem5.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Trator do Sítio<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>imagem6.jpg<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Carroça antiga<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/texto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/foto<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/imagens<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<h2>Download do Componente FlashLightBox</h2>
<p>Para criar o efeito LightBox vamos usar o Componente que eu desenvolvi. O link para baixar o Componente e instruções de como instalar estão em meu Blog.</p>
<p><a title="Componente FlashLightBox" href="http://www.natanalves.com/blog/flashlightbox" target="_blank">Componente FlashLightBox</a></p>
<h2>Criando a galeria</h2>
<p>Após terem baixado e instalado o Componente, vamos criar um novo arquivo no Flash. Abram o painel de Componentes (Ctrl+F7 ou Window, Components) e joguem para o palco o Componente FlashLightBox, abram o painel Properties e dêem instancia de <strong>flb</strong> para ele. O Componente pode estar posicionado no local que desejar, ele não irá aparecer quando seu arquivo rodar.</p>
<p>Diferentemente das outras galerias que mostrei como criar aqui no MXStudio, nessa galeria não é preciso criar nenhum MovieClip, campo de texto, nem nada. Tudo será criado a partir do ActionScript. Nós vamos carregar as imagens, adicionar uma borda a cada imagem e adicionar uma sombra usando o Filtro DropShadow, cada imagem será dimensionada para um tamanho randomico, assim como sua posição e rotação. Podemos mover as imagens pela tela e para ver a imagem com o tamanho original clicamos duas vezes sobre a imagem para que ela seja revelada com o efeito LightBox.</p>
<p>Vamos as ações da Galeria, quem estiver usando o <strong>ActionScript 2</strong>, copiem e colem essas ações no mesmo frame que o Componente está:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Importa a Classe do Filtro DropShadow */</span>
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filters</span>.<span style="color: #006600;">DropShadowFilter</span>;
<span style="color: #808080; font-style: italic;">/* Alinha o arquivo para o canto superior esquerdo */</span>
<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">align</span> = <span style="color: #ff0000;">&quot;TL&quot;</span>;
<span style="color: #808080; font-style: italic;">/* Desabilitamos o dimencionamento do arquivo */</span>
<span style="color: #0066CC;">Stage</span>.<span style="color: #0066CC;">scaleMode</span> = <span style="color: #ff0000;">&quot;noScale&quot;</span>;
<span style="color: #808080; font-style: italic;">/* Variável que vai ser usada no setInterval */</span>
<span style="color: #000000; font-weight: bold;">var</span> intervalo:<span style="color: #0066CC;">Number</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">/* Variável usada no duplo clique do mouse */</span>
<span style="color: #000000; font-weight: bold;">var</span> count:<span style="color: #0066CC;">Number</span> = 0;
<span style="color: #808080; font-style: italic;">/* Variável que armazena o total de itens do XML */</span>
<span style="color: #000000; font-weight: bold;">var</span> total:<span style="color: #0066CC;">Number</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">/* Criamos um listener */</span>
<span style="color: #000000; font-weight: bold;">var</span> listener:<span style="color: #0066CC;">Object</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">/* Criamos uma instancia da Classe XML */</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">xml</span>:<span style="color: #0066CC;">XML</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">XML</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">/* Ignoramos os espaços em branco */</span>
<span style="color: #0066CC;">xml</span>.<span style="color: #0066CC;">ignoreWhite</span> = <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #808080; font-style: italic;">/* Carregamos o arquivo XML */</span>
<span style="color: #0066CC;">xml</span>.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;imagens.xml&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">/* Ao carregar o arquivo XML */</span>
<span style="color: #0066CC;">xml</span>.<span style="color: #0066CC;">onLoad</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>ok<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* Se não deu erro */</span>
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>ok<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* Identificamos o primeiro nó do XML */</span>
		<span style="color: #0066CC;">xmlNode</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">firstChild</span>;
		<span style="color: #808080; font-style: italic;">/* Armazena o total de itens do XML */</span>
		total = <span style="color: #0066CC;">xmlNode</span>.<span style="color: #0066CC;">childNodes</span>.<span style="color: #0066CC;">length</span>;
		<span style="color: #808080; font-style: italic;">/* Chama a função carrega */</span>
		carrega<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* Mostra a mensagem de erro */</span>
		<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Erro&quot;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* Função que carrega as imagens */</span>
<span style="color: #000000; font-weight: bold;">function</span> carrega<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* Criamos um laço para percorrer todos os itens do XML */</span>
	<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> i=0; i<span style="color: #66cc66;">&lt;</span>total; i++<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* Criamos um novo MovieClip */</span>
		<span style="color: #000000; font-weight: bold;">var</span> mc:<span style="color: #0066CC;">MovieClip</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;mc&quot;</span>+i, <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Criamos um MovieClip que servirá de alvo para carregar a imagem */</span>
		<span style="color: #000000; font-weight: bold;">var</span> holder:<span style="color: #0066CC;">MovieClip</span> = mc.<span style="color: #0066CC;">createEmptyMovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;holder&quot;</span>, mc.<span style="color: #0066CC;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Rotacionamos o MovieClip de forma randomica */</span>
		mc.<span style="color: #0066CC;">_rotation</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>-<span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span>+<span style="color: #cc66cc;">10</span>;
		<span style="color: #808080; font-style: italic;">/* Armazena o número do nó do XML */</span>
		mc.<span style="color: #006600;">id</span> = i;
		<span style="color: #808080; font-style: italic;">/* Ao precionar do Mouse no MovieClip */</span>
		mc.<span style="color: #0066CC;">onPress</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* Jogamos ele pra cima de tudo */</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">swapDepths</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">getNextHighestDepth</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #808080; font-style: italic;">/* Incrementamos a variável do duplo clique */</span>
			count++;
			<span style="color: #808080; font-style: italic;">/* Se ela for igual a 1 */</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>count == <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				<span style="color: #808080; font-style: italic;">/* Movimenta o MovieClip */</span>
				<span style="color: #0066CC;">startDrag</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #808080; font-style: italic;">/* Iniciamos um intervalo para saber se o usuário irá clicar novamente */</span>
				<span style="color: #808080; font-style: italic;">/* Fazemos isso para saber se é um clique duplo ou não */</span>
				intervalo = <span style="color: #0066CC;">setInterval</span><span style="color: #66cc66;">&#40;</span>verifica, <span style="color: #cc66cc;">250</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #808080; font-style: italic;">/* Se a variável for igual a 2 */</span>
			<span style="color: #808080; font-style: italic;">/* Significa que o duplo clique aconteceu */</span>
			<span style="color: #66cc66;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>count == <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				<span style="color: #808080; font-style: italic;">/* Zeramos a variável */</span>
				count = 0;
				<span style="color: #808080; font-style: italic;">/* Encerramos o intervalo */</span>
				<span style="color: #0066CC;">clearInterval</span><span style="color: #66cc66;">&#40;</span>intervalo<span style="color: #66cc66;">&#41;</span>;
				<span style="color: #808080; font-style: italic;">/* Chamamos a função carrega do Componente FlashLightBox */</span>
				<span style="color: #808080; font-style: italic;">/* A função recebe o endereço da imagem e o texto para a legenda */</span>
				flb.<span style="color: #006600;">carrega</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">xmlNode</span>.<span style="color: #0066CC;">childNodes</span><span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">id</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">childNodes</span><span style="color: #66cc66;">&#91;</span>0<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">firstChild</span>.<span style="color: #0066CC;">nodeValue</span>, <span style="color: #0066CC;">xmlNode</span>.<span style="color: #0066CC;">childNodes</span><span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">id</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">childNodes</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">firstChild</span>.<span style="color: #0066CC;">nodeValue</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>;
		<span style="color: #808080; font-style: italic;">/* Ao soltar do Mouse */</span>
		mc.<span style="color: #0066CC;">onRelease</span> = mc.<span style="color: #0066CC;">onReleaseOutside</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* Paramos de movimentar o MovieClip */</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">stopDrag</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #808080; font-style: italic;">/* Criamos uma instancia da Classe DropShadowFilter */</span>
		<span style="color: #000000; font-weight: bold;">var</span> sombra:DropShadowFilter = <span style="color: #000000; font-weight: bold;">new</span> DropShadowFilter<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Modiciamos o angulo */</span>
		sombra.<span style="color: #006600;">angle</span> = <span style="color: #cc66cc;">45</span>;
		<span style="color: #808080; font-style: italic;">/* Modificamos o blurX e blurY */</span>
		sombra.<span style="color: #006600;">blurX</span> = <span style="color: #cc66cc;">5</span>;
		sombra.<span style="color: #006600;">blurY</span> = <span style="color: #cc66cc;">5</span>;
		<span style="color: #808080; font-style: italic;">/* Modificamos a distancia */</span>
		sombra.<span style="color: #006600;">distance</span> = <span style="color: #cc66cc;">3</span>;
		<span style="color: #808080; font-style: italic;">/* Modificamos a intencidade da sombra */</span>
		sombra.<span style="color: #006600;">strength</span> = <span style="color: #cc66cc;">0.75</span>;
		<span style="color: #808080; font-style: italic;">/* Criamos um Array que armazena os filtros usados */</span>
		<span style="color: #000000; font-weight: bold;">var</span> filtro:<span style="color: #0066CC;">Array</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Adicionamos ao Array a sombra */</span>
		filtro.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>sombra<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Aplica a sombra ao MovieClip */</span>
		mc.<span style="color: #006600;">filters</span> = filtro;
		<span style="color: #808080; font-style: italic;">/* Criamos uma instancia da Classe MovieClipLoader */</span>
		<span style="color: #000000; font-weight: bold;">var</span> loader:<span style="color: #0066CC;">MovieClipLoader</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClipLoader</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Carregamos a imagem */</span>
		loader.<span style="color: #0066CC;">loadClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">xmlNode</span>.<span style="color: #0066CC;">childNodes</span><span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">childNodes</span><span style="color: #66cc66;">&#91;</span>0<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">firstChild</span>.<span style="color: #0066CC;">nodeValue</span>, holder<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #808080; font-style: italic;">/* Modificamos o tamanho dela randomicamente */</span>
		holder.<span style="color: #0066CC;">_xscale</span> = <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>+<span style="color: #cc66cc;">60</span>;
		holder.<span style="color: #0066CC;">_yscale</span> = holder.<span style="color: #0066CC;">_xscale</span>;
		<span style="color: #808080; font-style: italic;">/* Modificamos a posição da imagem */</span>
		holder.<span style="color: #0066CC;">_x</span> = <span style="color: #cc66cc;">10</span>;
		holder.<span style="color: #0066CC;">_y</span> = <span style="color: #cc66cc;">10</span>;
		<span style="color: #808080; font-style: italic;">/* Adicionamos um listener a instancia da Classe MovieClipLoader */</span>
		loader.<span style="color: #0066CC;">addListener</span><span style="color: #66cc66;">&#40;</span>listener<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* Função chamada caso o usuário não clique duas vezes sobre a imagem */</span>
<span style="color: #000000; font-weight: bold;">function</span> verifica<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* Zera a variavel */</span>
	count = 0;
	<span style="color: #808080; font-style: italic;">/* Encerramos o intervalo */</span>
	<span style="color: #0066CC;">clearInterval</span><span style="color: #66cc66;">&#40;</span>intervalo<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">/* Ao carregar a imagem */</span>
listener.<span style="color: #0066CC;">onLoadInit</span> = <span style="color: #000000; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>alvo:<span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* Definimos a cor de fundo da borda */</span>
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>0xFFFFFF, <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">/* Começamos a desenhar a borda de acordo com o tamanho da imagem */</span>
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>0, 0<span style="color: #66cc66;">&#41;</span>;
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>0, alvo.<span style="color: #0066CC;">_height</span>+<span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>;
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>alvo.<span style="color: #0066CC;">_width</span>+<span style="color: #cc66cc;">20</span>, alvo.<span style="color: #0066CC;">_height</span>+<span style="color: #cc66cc;">20</span><span style="color: #66cc66;">&#41;</span>;
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span>alvo.<span style="color: #0066CC;">_width</span>+<span style="color: #cc66cc;">20</span>, 0<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">/* Termina de desenhar */</span>
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">/* Modifica a posição do MovieClip de forma randomica */</span>
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">_x</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Stage</span>.<span style="color: #006600;">width</span>-alvo.<span style="color: #0066CC;">_width</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
	alvo.<span style="color: #0066CC;">_parent</span>.<span style="color: #0066CC;">_y</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Stage</span>.<span style="color: #006600;">height</span>-alvo.<span style="color: #0066CC;">_height</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Quem estiver usando <strong>ActionScript 3</strong> as ações são essas:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3 actionscript3" style="font-family:monospace;"><span style="color: #009900;">/* Alinha o arquivo para o canto superior esquerdo */</span>
<span style="color: #004993;">stage</span>.<span style="color: #004993;">align</span> = <span style="color: #004993;">StageAlign</span>.<span style="color: #004993;">TOP_LEFT</span>;
<span style="color: #009900;">/* Desabilitamos o dimencionamento do arquivo */</span>
<span style="color: #004993;">stage</span>.<span style="color: #004993;">scaleMode</span> = <span style="color: #004993;">StageScaleMode</span>.<span style="color: #004993;">NO_SCALE</span>;
<span style="color: #009900;">/* Variavel que armazena o MovieClip selecionado */</span>
<span style="color: #6699cc; font-weight: bold;">var</span> alvo<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MovieClip</span>;
<span style="color: #009900;">/* Variável que armazena a quantidade de itens do XML */</span>
<span style="color: #6699cc; font-weight: bold;">var</span> total<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Number</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Criamos uma instancia da Classe XML */</span>
<span style="color: #6699cc; font-weight: bold;">var</span> xml<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">XML</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">XML</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Criamos uma instancia da Classe URLLoader */</span>
<span style="color: #6699cc; font-weight: bold;">var</span> arquivo<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">URLLoader</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLLoader</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Carregamos o XML */</span>
arquivo.<span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLRequest</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;imagens.xml&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Adicionamos um event listener chamando a função arquivoOk */</span>
arquivo.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">COMPLETE</span>, arquivoOk<span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Função chamada assim que o XML é carregado */</span>
<span style="color: #339966; font-weight: bold;">function</span> arquivoOk<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Armazenamos os dados do XML na instancia da Classe XML */</span>
	xml = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">XML</span><span style="color: #000000;">&#40;</span>event.<span style="color: #004993;">target</span>.<span style="color: #004993;">data</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Armazenamos o total de itens */</span>
	total = xml.foto.<span style="color: #004993;">length</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Chama a função carrega */</span>
	carrega<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #009900;">/* Função que carrega as imagens */</span>
<span style="color: #339966; font-weight: bold;">function</span> carrega<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Criamos um laço para percorrer todos os itens do XML */</span>
	<span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> i=0; i<span style="color: #000000; font-weight: bold;">&lt;</span>total; i<span style="color: #000000; font-weight: bold;">++</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
		<span style="color: #009900;">/* Criamos um MovieClip */</span>
		<span style="color: #6699cc; font-weight: bold;">var</span> mc<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MovieClip</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">MovieClip</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Rotacionamos ele randomicamente */</span>
		mc.<span style="color: #004993;">rotation</span> = <span style="color: #004993;">Math</span>.<span style="color: #004993;">round</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*-</span><span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">10</span>;
		<span style="color: #009900;">/* Habilitamos o clique duplo do Mouse */</span>
		mc.<span style="color: #004993;">doubleClickEnabled</span> = <span style="color: #0033ff; font-weight: bold;">true</span>;
		<span style="color: #009900;">/* Adicionamos um event listener para quando o mouse for clicado no MovieClip */</span>
		mc.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">MOUSE_DOWN</span>, mcPress<span style="color: #000000;">&#41;</span>;
		mc.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">MOUSE_UP</span>, mcRelease<span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Adicionamos um event listener para o clique duplo */</span>
		mc.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">MouseEvent</span>.<span style="color: #004993;">DOUBLE_CLICK</span>, mcDoble<span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Armazena o número do nó do XML */</span>
		mc.id = i;
		<span style="color: #009900;">/* Criamos uma instancia da Classe DropShadowFilter */</span>
		<span style="color: #6699cc; font-weight: bold;">var</span> sombra<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">DropShadowFilter</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">DropShadowFilter</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Modificamos o angulo da sombra */</span>
		sombra.<span style="color: #004993;">angle</span> = <span style="color: #000000; font-weight:bold;">45</span>;
		<span style="color: #009900;">/* Modificamos o blurX e blurY */</span>
		sombra.<span style="color: #004993;">blurX</span> = <span style="color: #000000; font-weight:bold;">5</span>;
		sombra.<span style="color: #004993;">blurY</span> = <span style="color: #000000; font-weight:bold;">5</span>;
		<span style="color: #009900;">/* Modificamos a distancia */</span>
		sombra.<span style="color: #004993;">distance</span> = <span style="color: #000000; font-weight:bold;">3</span>;
		<span style="color: #009900;">/* Modificamos a intencidade da sombra */</span>
		sombra.<span style="color: #004993;">strength</span> = <span style="color: #000000; font-weight:bold;">0.75</span>;
		<span style="color: #009900;">/* Criamos um Array para armazenar os filtros utilizados */</span>
		<span style="color: #6699cc; font-weight: bold;">var</span> filtro<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Array</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Array</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Adicionamos no Array a sobra criada */</span>
		filtro.<span style="color: #004993;">push</span><span style="color: #000000;">&#40;</span>sombra<span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Adiciona os filtros ao MovieClip */</span>
		mc.<span style="color: #004993;">filters</span> = filtro;
		<span style="color: #009900;">/* Criamos uma instancia da Classe Loader */</span>
		<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">loader</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Loader</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Loader</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Desabilitamos o mouse */</span>
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">mouseEnabled</span> = <span style="color: #0033ff; font-weight: bold;">false</span>;
		<span style="color: #009900;">/* Carregamos a imagem */</span>
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">load</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">URLRequest</span><span style="color: #000000;">&#40;</span>xml.foto<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span>.imagem<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Modificamos o tamanho da imagem randomicamente */</span>
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">scaleX</span> = <span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">0.2</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">0.6</span>;
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">scaleY</span> = <span style="color: #004993;">loader</span>.<span style="color: #004993;">scaleX</span>;
		<span style="color: #009900;">/* Modificamos a posição da imagem */</span>
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">x</span> = <span style="color: #000000; font-weight:bold;">10</span>;
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">y</span> = <span style="color: #000000; font-weight:bold;">10</span>;
		<span style="color: #009900;">/* Adicionamos um event listener para saber quando terminou de carregar a imagem */</span>
		<span style="color: #004993;">loader</span>.<span style="color: #004993;">contentLoaderInfo</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span>.<span style="color: #004993;">COMPLETE</span>, loaderOk<span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Adiciona a imagem ao MovieClip criado */</span>
		mc.<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">loader</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #009900;">/* Adiciona o MovieClip ao palco */</span>
		<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>mc<span style="color: #000000;">&#41;</span>;
	<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #009900;">/* Função chamada quando a imagem termina de ser carregada */</span>
<span style="color: #339966; font-weight: bold;">function</span> loaderOk<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Criamos uma referencia para a imagem */</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">loader</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Loader</span> = event.<span style="color: #004993;">target</span>.<span style="color: #004993;">loader</span>;
	<span style="color: #009900;">/* Criamos uma referencia ao MovieClip */</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> mc<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MovieClip</span> = <span style="color: #004993;">MovieClip</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">loader</span>.<span style="color: #004993;">parent</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Definimos a cor de fundo da borda */</span>
	mc.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0xFFFFFF, <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Começamos a desenhar a borda no MovieClip de acordo com o tamanho da imagem */</span>
	mc.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span>0, 0<span style="color: #000000;">&#41;</span>;
	mc.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span>0, <span style="color: #004993;">loader</span>.<span style="color: #004993;">height</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span>;
	mc.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">loader</span>.<span style="color: #004993;">width</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">20</span>, <span style="color: #004993;">loader</span>.<span style="color: #004993;">height</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">20</span><span style="color: #000000;">&#41;</span>;
	mc.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">lineTo</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">loader</span>.<span style="color: #004993;">width</span><span style="color: #000000; font-weight: bold;">+</span><span style="color: #000000; font-weight:bold;">20</span>, 0<span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Termina de desenhar */</span>
	mc.<span style="color: #004993;">graphics</span>.<span style="color: #004993;">endFill</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Modifica a posição do MovieClip de forma randomica */</span>
	mc.<span style="color: #004993;">x</span> = <span style="color: #004993;">Math</span>.<span style="color: #004993;">round</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">stage</span>.stageWidth<span style="color: #000000; font-weight: bold;">-</span>mc.<span style="color: #004993;">width</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
	mc.<span style="color: #004993;">y</span> = <span style="color: #004993;">Math</span>.<span style="color: #004993;">round</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span>.<span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">stage</span>.stageHeight<span style="color: #000000; font-weight: bold;">-</span>mc.<span style="color: #004993;">height</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #009900;">/* Função chamada quando clicamos duas vezes sobre a imagem */</span>
<span style="color: #339966; font-weight: bold;">function</span> mcDoble<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Chamamos a função carrega do Componente FlashLightBox */</span>
	<span style="color: #009900;">/* A função recebe o endereço da imagem e o texto para a legenda */</span>
	flb.carrega<span style="color: #000000;">&#40;</span>xml.foto<span style="color: #000000;">&#91;</span>event.<span style="color: #004993;">target</span>.id<span style="color: #000000;">&#93;</span>.imagem, xml.foto<span style="color: #000000;">&#91;</span>event.<span style="color: #004993;">target</span>.id<span style="color: #000000;">&#93;</span>.texto<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #009900;">/* Função chamada quando clica com o mouse sobre o MovieClip */</span>
<span style="color: #339966; font-weight: bold;">function</span> mcPress<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Identificamos o alvo */</span>
	alvo = <span style="color: #004993;">MovieClip</span><span style="color: #000000;">&#40;</span>event.<span style="color: #004993;">target</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Coloca o alvo a frente dos demais MovieClips */</span>
	<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>alvo<span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Movimenta o MovieClip */</span>
	alvo.<span style="color: #004993;">startDrag</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
<span style="color: #009900;">/* Função chamada quando soltamos o botão esquerdo do mouse */</span>
<span style="color: #339966; font-weight: bold;">function</span> mcRelease<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">MouseEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Paramos de movimentar o MovieClip */</span>
	event.<span style="color: #004993;">target</span>.<span style="color: #004993;">stopDrag</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Aqui está um exemplo da galeria funcionando:<br />
<a title="Exemplo da galeria" href="http://www.natanalves.com/mx/imagens3.html" target="_blank">Exemplo galeria</a></p>
<h2>Conclusões</h2>
<p>Chegamos ao fim de mais um tutorial. Um exemplo bem simples de como usar o Componente FlashLightBox e uma oportunidade para aprender a criar uma galeria usando apenas ActionScript.</p>
<p>Gostaria de aproveitar a oportunidade e convidar todos os leitores a visitarem meu Portfolio Online, lá você poderão encontrar todos os meus trabalhos e tutoriais desenvolvidos: <a title="http://www.natanalves.com" href="http://www.natanalves.com" target="_blank">http://www.natanalves.com</a></p>
<p>Um abraço a todos e até a próxima.</p>
<p>Autor: Natan D. Alves – Moderador do Fórum de Flash &amp; ActionSctipt MXSTUDIO<br />
Qualquer dúvida envie um e-mail para <a title="E-mail" href="mailto:natanalves@mxstudio.com.br" target="_blank">natanalves@mxstudio.com.br</a> ou acesse nosso <a title="Acessem nosso fórum" href="http://www.mxstudio.com.br/forum" target="_blank">fórum</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/galeria-de-imagens-com-xml-e-lightbox/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Flash Remoting + ColdFusion + AMFPHP</title>
		<link>http://www.mxstudio.com.br/flash/flash-remoting-coldfusion-amfphp/</link>
		<comments>http://www.mxstudio.com.br/flash/flash-remoting-coldfusion-amfphp/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 23:00:56 +0000</pubDate>
		<dc:creator>Lucas_marcal</dc:creator>
				<category><![CDATA[Coldfusion]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2833</guid>
		<description><![CDATA[Salve pessoal
Historicamente eu sempre trabalhei com ColdFusion isso já tem alguns anos, porém nos últimos 2 anos e venho trabalhando bastante com PHP por motivos óbvios, a falta de programador ColdFusion visto que eu não faça mais todo o processo de desenvolvimento de um site.
Porém essa semana eu tive uma demanda de um site feito [...]]]></description>
			<content:encoded><![CDATA[<p>Salve pessoal<br />
Historicamente eu sempre trabalhei com ColdFusion isso já tem alguns anos, porém nos últimos 2 anos e venho trabalhando bastante com PHP por motivos óbvios, a falta de programador ColdFusion visto que eu não faça mais todo o processo de desenvolvimento de um site.</p>
<p>Porém essa semana eu tive uma demanda de um site feito em flash que deveria consumir métodos de um CFC (ColdFusion Componente), como eu não fazia isso desde a época que eu trabalhava com AS2 decidi escrever uma nova classe para conexão em AS3 e foi exatamente ai que meus problemas começaram.</p>
<p>Primeiramente eu teria que instalar o ColdFusion 8 na minha maquina e de preferência ele deveria rodar em cima do Apache, para isso eu usei o Tutorial do meu brother Marcio Nakano:<br />
<strong><a href="http://www.zetaiweb.com.br/blog/index.php/2008/09/instalando-servidor-apache-com-mysql-e-as-linguagens-coldfusion-e-php/">Instalando servidor Apache com Mysql e as linguagens ColdFusion e PHP.</a></strong></p>
<p>Feito isso (e depois desfeito, pois achei que isso poderia ser a causa do erro que eu descrevo a seguir) agora era a hora de escrever a classe, mas por onde começar, Google é a solução? Não foi bem assim.</p>
<p>O material que fala sobre Flash Remoting + ColdFusion na web é bem fraco e muito confuso sem falar que a grande maioria é em inglês o que dificultou um pouco mais o entendimento já que não sou um expert na língua do “Tio Sam”, abaixo estão listados alguns dos melhores que encontrei:<br />
<strong><a href="http://delicious.com/theflashcoder/flashremoting?detail=3">Delicious Flash Remoting</a></strong></p>
<p>Foi então que tive a feliz idéia de Twittar essa minha raiva e logo depois recebi uma mensagem do <a href="http://twitter.com/netoleal">Neto Leal</a> e de <a href="http://twitter.com/bribeiro">Bruno Ribeiro</a> me oferecendo ajuda, na parte do <a href="http://twitter.com/netoleal">Neto Leal</a> ele me indicou esse link:<br />
<strong><a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=othertechnologies_07.html">Ativando Flash Remoting</a></strong></p>
<p>Mesmo fazendo o que o link indica o erro ainda persistia foi então que comecei a trocar idéia com o <a href="http://twitter.com/bribeiro">Bruno Ribeiro</a>, depois de algumas dicas e do envio da classe que ele mesmo usa para fazer isso eu consegui conectar e consumir um método do ColdFusion.</p>
<p>Eu sempre digo isso, mas é bom reforçar, na vida uma das melhores coisas é ter amigos e eu agradeço ao <a href="http://twitter.com/netoleal">Neto Leal</a> e ao <a href="http://twitter.com/bribeiro">Bruno Ribeiro</a> pela ajuda, então nada mais lógico do que eu postar aqui a classe que eu fiz baseada nesse longo caminho percorrido para conseguir conectar o Flash ao ColdFusion e ao AMFPHP, lembrando que essa classe foi baseada na classe do <a href="http://twitter.com/bribeiro">Bruno Ribeiro</a> e não tenho a pretensão de achar que ela é a melhor do mundo, mas pelo menos ela funciona com ColdFusion e AMFPHP, segue o código:</p>
<p><strong>RemotingConexao.as</strong><br />
[coolcode lang="actionscript"]</p>
<p>package lmcosta.remoto.cf<br />
{<br />
import flash.display.MovieClip;</p>
<p>import flash.events.Event;<br />
import flash.events.EventDispatcher;<br />
import flash.events.NetStatusEvent;</p>
<p>import flash.net.NetConnection;<br />
import flash.net.ObjectEncoding;<br />
import flash.net.Responder;</p>
<p>/**<br />
* &#8230;<br />
* @author lmcosta<br />
* @link www.lucasmarcal.com.br/blog &#8211; www.brunoribeiro.net<br />
* @return<br />
* @version 1.0<br />
*/</p>
<p>public class RemotingConexao extends MovieClip<br />
{<br />
public var _servico    :        NetConnection;<br />
public var _responder  :        Responder;<br />
public var _fcnRetorno :        Function;<br />
public var _cfc        :        String;<br />
public var _metodo     :        String;<br />
public var _resultado  :        Object;</p>
<p>public function RemotingConexao()<br />
{<br />
this._responder =                new Responder(resultado, falha);<br />
this._servico   =                new NetConnection();<br />
this._servico.objectEncoding =   ObjectEncoding.AMF0;<br />
this._servico.connect(&#8221;http://127.0.0.1:8500/flashservices/gateway&#8221;);<br />
trace(&#8221;Conectou&#8221;);<br />
}<br />
/**<br />
*<br />
* @param	$cfc = String que contém o caminho do CFC<br />
* @param	$metodo = String com o nome do método do CFC<br />
* @param	$fcnRetorno = Metodo de retorno na referencia dessa classe<br />
* @param	$args = Argumentos<br />
*/<br />
public function consome($cfc:String = &#8220;&#8221; , $metodo:String=&#8221;" , $fcnRetorno:Function = null , $args:Object = null ):void<br />
{<br />
var refCFCMetodo:String = $cfc + &#8220;.&#8221; + $metodo;</p>
<p>this._fcnRetorno = $fcnRetorno;<br />
this._cfc = $cfc;<br />
this._metodo = $metodo;</p>
<p>if ($args == null)<br />
{<br />
this._servico.call.apply(null, [refCFCMetodo, this._responder]);<br />
}<br />
else<br />
{<br />
this._servico.call.apply(null, [refCFCMetodo, this._responder].concat($args));<br />
}</p>
<p>}<br />
/**<br />
*<br />
* @param	f = Objeto que retorna Erros<br />
*/<br />
private function falha(f:Object):void<br />
{<br />
trace(&#8221;fault&#8221;+f.details);<br />
trace(&#8221;fault&#8221;+f.description);<br />
}<br />
/**<br />
*<br />
* @param	re = Objeto que retorna os resultados<br />
* @return  Retorna o valor que veio do CFC na referencia da classe<br />
*/<br />
private function resultado(re:Object):Object<br />
{<br />
this._resultado = re;</p>
<p>if (re != &#8220;&#8221;)<br />
{<br />
this._resultado = re;</p>
<p>if (this._resultado.length)<br />
{<br />
return this._fcnRetorno(this._resultado);<br />
}<br />
else<br />
{<br />
return this._fcnRetorno(false);<br />
}<br />
}<br />
else<br />
{<br />
return this._fcnRetorno(false);<br />
}<br />
}</p>
<p>}</p>
<p>}<br />
[/coolcode]</p>
<p><strong>Consumindo a classe</strong><br />
Para utilizar essa classe você deve criar um novo arquivo no Flash do tipo Actionscript 3.0, depois crie uma classe que no meu caso eu chamei de “Teste.as” e escreva o seguinte:</p>
<p><strong>Teste.as</strong><br />
[coolcode lang="actionscript"]</p>
<p>package<br />
{<br />
import flash.display.MovieClip;<br />
import lmcosta.remoto.cf.RemotingConexao;<br />
/**<br />
* &#8230;<br />
* @author lmcosta<br />
*/<br />
public class Teste extends MovieClip<br />
{<br />
public var re:RemotingConexao</p>
<p>public function Teste()<br />
{<br />
trace(&#8221;Conetando&#8230;&#8230;.&#8221;)<br />
this.re =  new RemotingConexao();<br />
this.re.consome(&#8221;remotoAS3.componente&#8221;, &#8220;ola&#8221;, this.resultadoItem, {msg:&#8221;Seja Bem vindo&#8221;});<br />
}</p>
<p>public function resultadoItem(obj:Object):void<br />
{<br />
trace(&#8221;Tudo certo hora de trampar  &#8221; + obj)<br />
}</p>
<p>}</p>
<p>}<br />
[/coolcode]</p>
<p><strong><a href="http://www.lucasmarcal.com.br/labs/TutorialFlashRemotingAS3.rar">Arquivos do Tutorial</a></strong></p>
<p>Para utilizar a mesma classe para conectar ao AMFPHP basta você trocar o caminho do Gateway na classe RemotingConexao.as e indicar a classe e o método na classe Teste.as<br />
Gostaria mais uma vez de agradecer ao <a href="http://twitter.com/bribeiro">Bruno Ribeir</a>o e ao <a href="http://twitter.com/netoleal">Neto Leal</a> pela ajuda e espero que essa classe possa ajudar a todos.<br />
Até a próxima pessoal e sigam-me pelo <a href="http://www.twitter.com/lmcosta">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/flash-remoting-coldfusion-amfphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novidades Flash CS5 &#8211; Viper &#8211; Bomba Desenvolvimento para Iphone</title>
		<link>http://www.mxstudio.com.br/flash/novidades-flash-cs5-viper-bomba-desenvolvimento-para-iphone/</link>
		<comments>http://www.mxstudio.com.br/flash/novidades-flash-cs5-viper-bomba-desenvolvimento-para-iphone/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 20:08:31 +0000</pubDate>
		<dc:creator>Danilo Santana</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2717</guid>
		<description><![CDATA[Olá pessoal!
Mais uma vez imagino que ouvirei uma frase constante de alunos e amigos:
&#8220;Mas já vai sair o CS5? Eu mal comecei a usar o CS4!!!&#8221;
Em partes.
O CS5 já vem sendo desenvolvimento há um tempo, para quem não sabe o ciclo médio de lançamentos da Adobe é de 18 meses.
Sendo assim como tivemos a CS4 [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal!</p>
<p>Mais uma vez imagino que ouvirei uma frase constante de alunos e amigos:</p>
<p>&#8220;Mas já vai sair o CS5? Eu mal comecei a usar o CS4!!!&#8221;</p>
<p>Em partes.</p>
<p>O CS5 já vem sendo desenvolvimento há um tempo, para quem não sabe o ciclo médio de lançamentos da Adobe é de 18 meses.</p>
<p>Sendo assim como tivemos a CS4 lançada em Outubro passado, temos um prazo para a nova suíte datando em aproximadamente Abril de 2010.</p>
<p>Vou falar aqui de algumas novidades já públicas que eu posso comentar sobre o novo Flash.</p>
<h3><strong>Integração com o Builder</strong></h3>
<p>Agora desenvolvedores podem usar a IDE como gerenciador de elementos gráficos (o que no final das contas é a proposta mesmo) e ter como base para programação uma IDE voltada para programação e repleta de recursos como é o caso do Flash Builder (antigo Flex).</p>
<p>A outra linha também será possível: Desenvolver majoritariamente no Builder e gerar a exportação por ele apontando para o FLA.<br />
Sem sombra de dúvidas uma novidade muito interessante para o universo do Flash.</p>
<p>Canso de ouvir amigos que depois de migrarem para o Builder têem repulsa do painel Actions, pela sua falta de recursos. Agora a coisa fica bem mais integrada. Flash Pro para design e arquitetura do projeto e codificação na IDE focada para isso que é recém lançado Builder.</p>
<div id="attachment_2721" class="wp-caption aligncenter" style="width: 520px"><img class="size-full wp-image-2721" title="Flash CS5 Integração com Flash Builder" src="http://www.mxstudio.com.br/wp-content/uploads/2009/10/FlashBuilder_Flash_export_thumb.jpg" alt="Flash CS5 Integração com Flash Builder" width="510" height="352" /><p class="wp-caption-text">Flash CS5 Integração com Flash Builder</p></div>
<h3>Code Samples</h3>
<p>Novo painel para agilizar e facilitar a adição de códigos ao projeto. Além de automatizar tarefas comuns existe a possibilidade de criar e armazenar blocos próprios de código para evitar escrever muita coisa repetitiva sempre.<br />
Útil para deixar mais amigável o primeiro contato de iniciantes com a ActionScript 3.0. Pode ser a utopia do uso dos Behaviors.</p>
<p>Teremos itens para adição de interatividade (drag &#8216;n drop), controle de linha do tempo (nextFrame/Scene), movimentação por teclado (uso de setas), carregamento de arquivos (load de imagens e SWFs) e manipuladores de eventos (nossos essenciais listeners).</p>
<div id="attachment_2719" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-2719" title="Flash CS5 - Novo Painel Code Samples" src="http://www.mxstudio.com.br/wp-content/uploads/2009/10/CodeSamplesCS5-300x184.jpg" alt="Flash CS5 - Novo Painel Code Samples" width="300" height="184" /><p class="wp-caption-text">Flash CS5 - Novo Painel Code Samples</p></div>
<h3><strong>Painel Actions Melhorado</strong></h3>
<p>Para os que migram (e por um tempo ainda migrarão) para a programação em IDEs mais parrudas como o Eclipse/Builder essa novidade era pedida há muito tempo, MESMO.<br />
Entre outros recursos o painel agora tem suporte a code hints de classes customizadas e importadas. Recursos como auto completar com o nome de métodos e propriedades de recursos externos sempre foram muito pedidos no Flash e são com certeza uma das grandes razões de adoção do Builder como plataforma de programação.</p>
<p>A coisa agora estará bem melhor (só não sei se o movimento migratório para o Builder será freado..rs).</p>
<div id="attachment_2718" class="wp-caption aligncenter" style="width: 520px"><img class="size-full wp-image-2718" title="Flash CS5 - Melhorias Painel Actions" src="http://www.mxstudio.com.br/wp-content/uploads/2009/10/CodeHintingCS5_thumb.jpg" alt="Flash CS5 - Melhorias Painel Actions" width="510" height="243" /><p class="wp-caption-text">Flash CS5 - Melhorias Painel Actions</p></div>
<h3>Ferramenta Deco Melhorada</h3>
<p>A ferramenta introduzida na versão CS4 terá novos recursos para aumentar a gama de possibilidades de criação.<br />
Novos brushs customizáveis irão melhorar a adoção da ferramenta que pessoalmente eu só uso em treinamentos.</p>
<h3>Novos recursos com o Flash Text Layout Framework</h3>
<p>A implementação do novo framework da Adobe irá permitir um controle inédito de textos no Flash.</p>
<p>Novidades  em questões de estilos e alinhamentos, textos da direita para a esquerda, gestão de colunas, blocos de texto.</p>
<h3>FLA baseado em XML</h3>
<p>Essa novidade era prevista (<a title="Novidades Flash CS4 - Formato XFL" href="http://www.mxstudio.com.br/flash/novidades-flash-cs4-integracoes-formato-xfl/" target="_blank">eu já tinha cantado essa bola quando falei do formato XFL</a>) e será muito bem recebida.</p>
<p>A proposta é poder controlar e modificar recursos e elementos de um projeto sem necessariamente abrir e mexer com o FLA. O controle de edições de XML e arquivos de imagens centralizados irão agilizar e dar muito mais poder para desenvolvimentos entre pessoas. Alterar o topo de um site ou alguns elementos de um banner sem depender da abertura e manipulação direta no FLA são exemplos que falam por si.</p>
<h3>Componente de Video para Live Preview</h3>
<p>Essa era uma novidade esperada para o Flash CS4 mas só pode ser realmente implementada na CS5.</p>
<p>Agora temos um componente que permite assistir um preview do vídeo dentro do palco do Flash sem necessitar da exportação tradicional (CTRL/CMD+ENTER)</p>
<h3>BOMBA: Desenvolvimento para iPhone OS (iPhone e iPod Touch)</h3>
<p>Não dá para descrever essa novidade com outra palavra: Bomba!</p>
<p>Depois da Apple ter alfinetado a Adobe dizendo que o player do Flash era pesado e consumia muito de aparelhos portáteis, a Adobe começou uma onda interna de trabalhos para mudar esse quadro.</p>
<p>Aos que não sabiam a empresa se reposicionou com uma nova versão do Flash Player 10 com praticamente todos os recursos da Web voltado para dispositivos móveis.<br />
Fez acordos com 19 das 20 maiores fabricantes do mundo (quem será que ficou de fora?!) e está lançando essa versão do Player 10 em plataformas como o Android com grande afinco (pesquisem sobre o HTC Hero), mas não deixou de ter foco no universo do iPhone.</p>
<p>Lançar o Player dependeria totalmente de parceria (entenda aprovação) com a Apple, mas eis que a Adobe aparece com essa: o Flash CS5 poderá ser usado como plataforma de desenvolvimento e criação para iPhone.</p>
<p>O porque disse ser tão bombástico?</p>
<p>Até hoje o desenvolvimento para iPhone está em um universo controlado inteiramente pela Apple.</p>
<p>Nós temos que usar o Xcode que é sua IDE para desenvolvimento, que só roda no sistema operacional OS X que por sua vez só roda em máquinas Apple. A parte de vídeo roda em quicktime não em FLV.<br />
Vocês podem não saber mas mesmo o youtube do iphone foi ajustado para fazer um encoding em mp4 para o iphone, para nem a parte de vídeo sair do controla da empresa.</p>
<p>Agora a Adobe anuncia que o Flash irá permitir a criação de apps para iPhone usando toda a base do Flash.<br />
Isso quer dizer que nós que já trabalhos e desenvolvemos com ActionScript 3 há anos estaremos aptos a criar ou mesmo migrar nossos sistemas para a plataforma móvel da maçã.</p>
<p>E não fiquem pensando que a coisa é por traz dos panos e com maracutaias (alguém pensou em Palm). Pela proposta, nós iremos desenvolver em Flash/AS3 e iremos exportar aplicativos para o formato nativo do iPhone OS.</p>
<p>Assim eles poderão ser distribuídos e vendidos na App Store como um software criado normalmente em Xcode/Cocoa.</p>
<p>Essa talvez seja a novidade que mais vai impactar a nova versão do Flash, pode ser a porta de entrada de milhares de desenvolvedores para o mundo dos negócios na App Store do iPhone.</p>
<p>Eu já tinha começado a desenvolver para o iPhone há meses atrás, mas aprender o Objective-C do zero me desanimou pelo tempo que demandaria. Agora sabendo que posso desenvolver para o iPhone direto do nosso querido Flash com ActionScript 3, bem o panorama ficou MUITO promissor. <img src='http://www.mxstudio.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Mais detalhes na página dedicada ao assunto pela Adobe:</p>
<p><a title="Adobe Flash CS5 - Iphone" href="http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/" target="_blank">http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/</a></p>
<h3>Conclusão</h3>
<p>O Flash CS5 terá várias novidades para facilitar a vida dos profissionais que o utilizam.</p>
<p>Sejam as melhorias para designer (Deco, TLF), programadores iniciantes (Code samples) e programadores avançados (integração com Builder e compeling melhorado no painel) todos serão beneficiados com a versão.</p>
<p>Mas com ponto chave coloco essa quebra de paradigma no desenvolvimento para iPhone. Tenham certeza que esse mercado que já é rentável para desenvolvedores Cocoa, pode ser muito mas muito interessante para nós guerreiros do AS3.</p>
<p>É previsto um Beta do Flash CS5 para o final do ano, assim que tiver o meu (e puder falar..rs) eu divulgo mais informações.</p>
<p><strong>Abraço,<br />
Danilo Santana &#8211; Administrador do Portal MXSTUDIO</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/novidades-flash-cs5-viper-bomba-desenvolvimento-para-iphone/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Noções básicas sobre matrizes</title>
		<link>http://www.mxstudio.com.br/flash/nocoes-basicas-sobre-matrizes/</link>
		<comments>http://www.mxstudio.com.br/flash/nocoes-basicas-sobre-matrizes/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 11:34:22 +0000</pubDate>
		<dc:creator>Tiago Braga</dc:creator>
				<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2599</guid>
		<description><![CDATA[Olá Pessoal do MX Studio, tudo bom?
Hoje começo a colaborar com essa comunidade  ainda mais e pra mim é um orgulho está escrevendo aqui. Acompanho a mais de 3  anos o MX Studio!
Além do fórum do MX Studio ser um sucesso,  todos os tutoriais aqui são de ótima qualidade. Se você é [...]]]></description>
			<content:encoded><![CDATA[<p>Olá Pessoal do MX Studio, tudo bom?</p>
<p>Hoje começo a colaborar com essa comunidade  ainda mais e pra mim é um orgulho está escrevendo aqui. Acompanho a mais de 3  anos o MX Studio!</p>
<p>Além do fórum do MX Studio ser um sucesso,  todos os tutoriais aqui são de ótima qualidade. Se você é prestativo, tem  curiosidade de aprende e nunca desiste daquilo que pretende alcançar, o MX  Studio te ajudará!</p>
<p>Bom, vamos parar de blablabla e vamos estudar  algo que é de suma importância na programação em AS ou em até outras linguagens,  ARRAY!</p>
<p>Pois é, Array. Tem vários tutoriais na  internet hoje sobre este assunto, mas o que quero passar aqui com esta primeira  etapa são etapas de como trabalhar bem com este tipo de objeto.</p>
<p>Além de trabalhar com Array, vamos trabalhar  com outra opção de Matriz indexada que é o Vector.</p>
<h2>Requisitos para o estudo:</h2>
<p><em>Flash CS3 ou Flash CS4  usando ActionScript 3<br />
Conhecimentos básicos em ActionScript 3<br />
Recomendo o download do  Guia do ActionScript 3 que está em português</em> &#8211; <a href="http://www.mxstudio.com.br/forum/index.php?showtopic=67677">http://www.mxstudio.com.br/forum/index.php?showtopic=67677</a></p>
<h2>Nosso estudo sobre estes tipos de Matrizes será dividido nas seguintes  etapas:</h2>
<ol>
<li>Noções básicas sobre  matrizes</li>
<li>Matrizes indexadas</li>
<li>Matrizes associativas</li>
<li>Matrizes multidimensionais</li>
<li>Clonagem de matrizes</li>
<li>Exemplo: Lista de  reprodução</li>
</ol>
<h1>Noções básicas sobre matrizes – Teoria</h1>
<p>Imagine uma player de música. Imaginou?</p>
<p>Seria uma variável para cada música?</p>
<p>Quantas músicas você poderá armazenar neste player? 1, 2,  3&#8230; 100?</p>
<p>Como vai organizar está informação para ser de fácil acesso  para navegar entre as músicas ou trocar uma música, deletar 3 músicas, tocar a  primeira, terceira é última música do player?</p>
<p>Será muito mais fácil organizar todos os objetos de músicas  em um pacote e trabalhar com eles como se fossem um grupo.</p>
<p>Não pense que matrizes só serviram para armazenar músicas,  podemos criar listas de vídeos em um site ou criar listas de banners que iram aparecer  durante o mês de Julho, por exemplo.</p>
<p>Uma matriz é um elemento de programação que funciona como  contêiner para um conjunto de itens, como uma lista de músicas.</p>
<p>Os itens individuais de uma matriz são conhecidos como  elementos da matriz. A matriz pode ser considerada como um arquivador de  variáveis. As variáveis podem ser adicionadas como elementos na matriz, como  quando você coloca uma pasta em seu arquivador. Você pode trabalhar com a  matriz como uma única variável como carregar todo o seu arquivo para um outro  local. Você pode trabalhar com as variáveis como um grupo, como analisar as  pastas uma a uma para buscar informações. Você também pode acessá-las  individualmente, como se estivesse abrindo o arquivo e selecionando uma única  pasta.</p>
<p>A matriz indexada é o tipo de matriz mais comum do  ActionScript. Em uma matriz indexada, cada item é armazenado em um slot  numerado (conhecido como índice). Os itens são acessados por meio de números,  como em endereços. As matrizes indexadas atendem a maior parte das exigências  de programação. A classe Array é uma das classes mais comuns utilizada para  representar uma matriz indexada.</p>
<p><span style="color: #ff0000;"><strong>Para criar este exemplo, abra um novo documento na linguagem  AS3 (ActionScript 3), clique na primeira camada, logo no primeiro frame desta  mesma camada e digite o seguinte código:</strong></span></p>
<div class="wp_syntax">
<div class="code">
<pre style="font-family: monospace;">var times:Array = new Array("Cruzeiro","Grêmio","São  Paulo","Atlético PR")
for(var  i:uint = 0; i&lt;times.length; i++){
trace("No indice  "+i+" do Array times (times["+i+"]), contém o valor "+  times[i].toString());
}</pre>
</div>
</div>
<p><strong>Salve, e teste o filme (CTRL+ENTER)</strong></p>
<address><em><strong>Obs.: Mais sobre matrizes indexadas na próxima etapa.</strong></em></address>
<p>Em geral, uma matriz indexada é usada para armazenar vários  itens do mesmo tipo (objetos que são ocorrências da mesma classe). A classe  Array não tem meios de restringir o tipo de itens que ela contém.</p>
<p>A classe Vector é o tipo de matriz indexada no quais todos  os itens de uma única matriz são do mesmo tipo. O uso da ocorrência Vector em  vez de Array também pode proporcionar melhorias no desempenho, além de outras  vantagens. A classe Vector está disponível a partir do Flash Player 10 e do  Adobe AIR 1.5.</p>
<p>Entenderá melhor sobre “ocorrências da mesma classe” e  como fazer “restrição”dos tipos de itens com a classe Vector nas próximas etapas.</p>
<h2>Tarefas comuns de matrizes</h2>
<p>As seguintes atividades comuns para se trabalhar com  matrizes são a seguir e serão aplicadas no decorrer de outras etapas:</p>
<ol type="1">
<li>Criação de matrizes indexadas usando as classes Array e Vector</li>
<li>Adição e remoção de elementos de matriz</li>
<li>Classificação de elementos de matriz</li>
<li>Extração de partes de uma matriz</li>
<li>Trabalho com matrizes associativas e dicionários</li>
<li>Trabalho com matrizes multidimensionais</li>
</ol>
<h2>Conceitos e termos importantes</h2>
<p>A lista de referência a seguir contém termos importantes  usados neste capítulo:</p>
<ol type="1">
<li><strong>Matriz</strong>: é um objeto que serve como contêiner para agrupar vários objetos
<ol type="a">
<li>var continentes:Array = new Array();</li>
</ol>
</li>
<li><strong>Operador de acesso à matriz ([])</strong>: é um par de colchetes que circundam um índice ou uma chave e identifica exclusivamente um elemento de matriz. Essa sintaxe       é usada após um nome de variável de matriz para especificar um único elemento da matriz, em vez de especificá-la inteira.
<ol type="a">
<li>Índice: continentes[0]</li>
<li>Chave: continentes[“ocidental”]</li>
</ol>
</li>
<li><strong>Matriz associativa</strong>: é uma matriz que usa chaves de string para identificar elementos individuais
<ol type="a">
<li>Chave: continentes[“ocidental”]</li>
</ol>
</li>
<li><strong>Tipo base</strong>: é o tipo de dados dos objetos que uma ocorrência de Vector pode armazenar</li>
<li><strong>Dicionário</strong>: é uma matriz cujos itens consistem em pares de objetos, conhecidos como chaves e valores. A chave é usada no lugar de um índice numérico para       identificar um único elemento.</li>
<li><strong>Elemento</strong>: é um item único de uma matriz</li>
<li><strong>Índice</strong>: é o &#8220;endereço&#8221; numérico usado para identificar um único elemento em uma matriz indexada</li>
<li><strong>Matriz indexada</strong>: é o tipo padrão da matriz que armazena cada elemento em uma posição numerada e usa o número (índice) para identificar elementos       individuais
<ol type="a">
<li>Chave: continentes[0] = “América do Sul”;</li>
<li>Chave: continentes[1] = “América do Norte”;</li>
</ol>
</li>
<li><strong>Chave</strong>: é a string ou o objeto usado para identificar um único elemento em uma matriz associativa ou em um dicionário</li>
<li><strong>Matriz multidimensional</strong>: é uma matriz que contém itens que são matrizes, em vez de valores únicos.</li>
<li><strong>T</strong>: é a convenção padrão usado nesta documentação para representar o tipo base de uma ocorrência de Vector, independentemente do tipo base. A convenção T é usada para representar um nome de classe, conforme exibido na descrição do parâmetro Type. (“T” corresponde a “tipo”, como em “tipo de dados”).</li>
</ol>
<p>Está primeira etapa está com bastante teoria. Nas próximas  etapas vamos trabalhar com exemplos das Matrizes Array e Vector.</p>
<p>Sugestões e dúvidas sobre o assunto, fiquem a vontade para  comentar&#8230;</p>
<p>Usem o fórum para discutir ou até mesmo para perguntar sobre  o que foi dito aqui nesta etapa. Eu estarei lá respondendo as perguntas.</p>
<p>Fórum sobre  Flash &amp; ActionScript: <a href="http://www.mxstudio.com.br/forum/index.php?s=0a96ec4e4feffcee79eccd46a37162a9&amp;showforum=8">http://www.mxstudio.com.br/forum/index.php?s=0a96ec4e4feffcee79eccd46a37162a9&amp;showforum=8</a></p>
<p>Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/nocoes-basicas-sobre-matrizes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps no Flash</title>
		<link>http://www.mxstudio.com.br/flash/google-maps-no-flash/</link>
		<comments>http://www.mxstudio.com.br/flash/google-maps-no-flash/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 22:40:03 +0000</pubDate>
		<dc:creator>Natan D. Alves</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[ActionScript 3]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Flash CS3]]></category>
		<category><![CDATA[flash cs4]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Maps]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2534</guid>
		<description><![CDATA[Olá comundidade.
Nesse artigo, irei mostrar para vocês, como usar a API do Google Maps no Flash. Os requisitos para esse tutorial são:

Flash CS3 ou Flash CS4 usando ActionScript 3
Conhecimentos em ActionScript 3

Baixando a API
Antes de ir para o Flash, precisamos primeiro baixar a API que será usada. Tudo o que precisam fazer é acessar o [...]]]></description>
			<content:encoded><![CDATA[<p>Olá comundidade.</p>
<p>Nesse artigo, irei mostrar para vocês, como usar a API do Google Maps no Flash. Os requisitos para esse tutorial são:</p>
<ul>
<li>Flash CS3 ou Flash CS4 usando ActionScript 3</li>
<li>Conhecimentos em ActionScript 3</li>
</ul>
<h2>Baixando a API</h2>
<p>Antes de ir para o Flash, precisamos primeiro baixar a API que será usada. Tudo o que precisam fazer é acessar o site da API do Google Maps para o Flash no site do Google Code.</p>
<p><a title="Site da API do Google Maps para Flash" href="http://code.google.com/intl/pt-BR/apis/maps/documentation/flash/" target="_blank">http://code.google.com/intl/pt-BR/apis/maps/documentation/flash/</a></p>
<p>Na página, vocês encontrarão a API através do seguinte link:</p>
<p><a title="Download SDK" href="http://maps.googleapis.com/maps/flash/release/sdk.zip" target="_blank">http://maps.googleapis.com/maps/flash/release/sdk.zip</a></p>
<p>No arquivo ZIP da API, contém duas pastar, uma chamada <em>docs</em>, que contém toda a documentação sobre a API, e uma pasta chamada <em>lib</em>, contendo dois arquivos SWC, um para os usuários do Flex (map_flex_1_9a.swc) e outro para os usuários do Flash (map_1_9a.swc).</p>
<p>Como vamos usar a API no Flash, precisamos copiar o arquivo map_1_9a.swc e jogar na pasta aonde estão os Componentes do Flash. O caminho para os usuários do <strong>Flash CS3</strong> é:</p>
<ul>
<li>(Windows) C:/Arquivos de Programas/Adobe/Adobe Flash CS3/<em>linguagem/</em>Configuration/Components</li>
<li>(Mac OS X) Macintosh HD/Applications/Adobe Flash CS3/Configuration/Components</li>
</ul>
<div>Onde <em>linguagem</em> é o nome da pasta da linguagem na qual o Flash foi instalado. Para os usuários do <strong>Flash CS4</strong> o caminho é um pouco diferente:</div>
<ul>
<li>(Windows) C:/Arquivos de Programas/Adobe/Adobe Flash CS4/Common/Configuration/Components</li>
<li>(Mac OS X) Macintosh HD/Applications/Adobe Flash CS4/Common/Configuration/Components</li>
</ul>
<p>Antes de colar o arquivo, criem uma pasta com o nome de Google Maps no diretório Components, para manter seu painel de Componentes organizado.</p>
<p>A última coisa que precisaremos fazer antes de ir ao Flash, é gerar uma chave para usar a API. A chave é gerada para os usuários que possuem alguma conta no Google. Para gerar a chave, acessem a página:</p>
<p><a title="Endereço para criação da chave API" href="http://code.google.com/intl/pt-BR/apis/maps/signup.html" target="_blank">http://code.google.com/intl/pt-BR/apis/maps/signup.html</a></p>
<p>Na página, vocês precisam Ler e concordar com os termos e condições do Google, e digitar o endereço do site no qual irá usar o Google Maps. Após ter digitado o seu site, uma chave será criada. Essa chave será usada no ActionScript.</p>
<h2>Indo pro Flash</h2>
<p>Chegou a hora de ir para o Flash. Criem um arquivo em ActionScript 3, abram o painel Components e joguem o Componente Google Maps Library para o palco. Se quiserem, podem remover o componente do palco pois não há necessidade de mante-lo já que criaremos o mapa através do ActionScript 3.</p>
<p>Para esse tutorial, criaremos um exemplo básico do Google Maps, exibindo os controles de Zoom e tipos de mapa e iniciando o mapa através de uma localização usando Latitude e Longitude. Copiem e colem as seguintes ações no frame no qual desejam que o mapa apareça.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3 actionscript3" style="font-family:monospace;"><span style="color: #009900;">/* Importa as Classes necessárias */</span>
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.Map;
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.MapEvent;
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.MapType;
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.LatLng;
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.controls.MapTypeControl;
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.controls.ZoomControl;
<span style="color: #0033ff; font-weight: bold;">import</span> com.google.maps.overlays.Marker;
<span style="color: #009900;">/* Criamos uma instancia da Classe Map */</span>
<span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">map</span><span style="color: #000000; font-weight: bold;">:</span>Map = <span style="color: #0033ff; font-weight: bold;">new</span> Map<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Inserimos nossa chave */</span>
<span style="color: #004993;">map</span>.key = <span style="color: #990000;">&quot;SUA CHAVE AQUI&quot;</span>;
<span style="color: #009900;">/* Definimos um tamanho para o Mapa */</span>
<span style="color: #004993;">map</span>.setSize<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Point</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">stage</span>.<span style="color: #004993;">stageWidth</span>, <span style="color: #004993;">stage</span>.<span style="color: #004993;">stageHeight</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Adiciona o controle de zoom */</span>
<span style="color: #004993;">map</span>.addControl<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> ZoomControl<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Adiciona o controle de tipo de mapa */</span>
<span style="color: #004993;">map</span>.addControl<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> MapTypeControl<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Adiciona o Mapa ao palco */</span>
<span style="color: #0033ff; font-weight: bold;">this</span>.<span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">map</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Adicionamos um eventListener chamando o evento MAP_READY */</span>
<span style="color: #009900;">/* Esse evento será disparado quando o Mapa estiver pronto para ser exibido */</span>
<span style="color: #009900;">/* O evento chama a função mapOk */</span>
<span style="color: #004993;">map</span>.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>MapEvent.MAP_READY, mapOk<span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">/* Função chamada pelo evento MAP_READY */</span>
<span style="color: #339966; font-weight: bold;">function</span> mapOk<span style="color: #000000;">&#40;</span>event<span style="color: #000000; font-weight: bold;">:</span>MapEvent<span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #009900;">/* Criamos uma instancia da Classe Marker */</span>
	<span style="color: #009900;">/* Passamos o local no qual queremos que o mapa esteja marcado */</span>
	<span style="color: #009900;">/* O local é passado usando Latitude e Longitude */</span>
	<span style="color: #6699cc; font-weight: bold;">var</span> marca<span style="color: #000000; font-weight: bold;">:</span>Marker = <span style="color: #0033ff; font-weight: bold;">new</span> Marker<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> LatLng<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">23.5635963</span>, <span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">46.6538854</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Adiciona a marca ao Mapa */</span>
	<span style="color: #004993;">map</span>.addOverlay<span style="color: #000000;">&#40;</span>marca<span style="color: #000000;">&#41;</span>;
	<span style="color: #009900;">/* Centraliza o Mapa de acordo com a posição desejada */</span>
	<span style="color: #004993;">map</span>.setCenter<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> LatLng<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">23.5635963</span>, <span style="color: #000000; font-weight: bold;">-</span><span style="color: #000000; font-weight:bold;">46.6538854</span><span style="color: #000000;">&#41;</span>, <span style="color: #000000; font-weight:bold;">16</span>, MapType.NORMAL_MAP_TYPE<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<h2>Vídeo tutorial</h2>
<p>Não se esqueçam de inserir a chave que foi criada na linha número 12 do ActionScript, a chave precisa estar entre aspas para que não aconteça nenhum erro.</p>
<p>Pra quem quiser, pode ver o vídeo desse tutorial. É a primeira vez que faço um vídeo tutorial, e espero poder fazer sempre em todos os meus futuros tutoriais.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/IilhyIk3bQk&amp;hl=pt-br&amp;fs=1&amp;" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/IilhyIk3bQk&amp;hl=pt-br&amp;fs=1&amp;" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<h2>Considerações Finais</h2>
<p>Com apenas algumas linhas do ActionScript, conseguimos criar usar o mapa de maneira fácil e sem complicação. Existem outros exemplos de como usar a API na própria página do Google Maps para o Flash.</p>
<p><a title="Exemplos Google Maps" href="http://code.google.com/intl/pt-BR/apis/maps/documentation/flash/examples/index.html" target="_blank">http://code.google.com/intl/pt-BR/apis/maps/documentation/flash/examples/index.html</a></p>
<p>Gostaria de aproveitar a oportunidade e convidar todos os leitores a visitarem meu Portfolio Online, lá você poderão encontrar todos os meus trabalhos e tutoriais desenvolvidos: <a title="http://www.natanalves.com" href="http://www.natanalves.com/" target="_blank">http://www.natanalves.com</a></p>
<p>Um abraço a todos e até a próxima.</p>
<p><strong>Autor: Natan D. Alves &#8211; Moderador do Fórum de Flash &amp; ActionSctipt MXSTUDIO</strong></p>
<p>Qualquer dúvida envie um e-mail para <a title="E-mail" href="mailto:natanalves@mxstudio.com.br">natanalves@mxstudio.com.br</a> ou acesse nosso <a title="Acessem nosso fórum" href="http://www.mxstudio.com.br/forum" target="_blank">fórum</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/google-maps-no-flash/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Box2D, Modo DebugDraw</title>
		<link>http://www.mxstudio.com.br/flash/box2d-modo-debugdraw/</link>
		<comments>http://www.mxstudio.com.br/flash/box2d-modo-debugdraw/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 21:39:51 +0000</pubDate>
		<dc:creator>Marcio Silva</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[box2d]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2511</guid>
		<description><![CDATA[Olá Pessoal,
Dando continuação ao último tutorial, será mostrado como utilizar o modo de debug do Box2D chamado de DebugDraw. Com esse modo você poderá analisar visualmente como estão ocorrendo as colisões, contatos, onde estão os centros de massa, que objetos estão &#8220;dormindo&#8221;, entre outras análises.
Para exemplificar esse modo será utilizado o mesmo código do artigo [...]]]></description>
			<content:encoded><![CDATA[<p>Olá Pessoal,</p>
<p>Dando continuação ao último tutorial, será mostrado como utilizar o modo de debug do Box2D chamado de <em>DebugDraw</em>. Com esse modo você poderá analisar visualmente como estão ocorrendo as colisões, contatos, onde estão os centros de massa, que objetos estão &#8220;dormindo&#8221;, entre outras análises.</p>
<p>Para exemplificar esse modo será utilizado o mesmo código do artigo anterior que pode ser visualizado em <a href="http://www.mxstudio.com.br/2009/04/box2d-primeira-simulacao/">http://www.mxstudio.com.br/2009/04/box2d-primeira-simulacao/</a>. Um preview do que será feito está logo abaixo:</p>
<p><object width="550" height="367" data="http://www.mxstudio.com.br/wp-content/uploads/2009/06/box2dmx.swf" type="application/x-shockwave-flash"><param name="src" value="http://www.mxstudio.com.br/wp-content/uploads/2009/06/box2dmx.swf" /></object></p>
<p>Algumas adaptações serão necessárias para colocar o <em>DebugDraw</em> no exemplo anteriormente visto. Primeiramente será necessário importar a classe <em>MovieClip </em> e demais modificações que podem ser vistas no código abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;">package
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
        <span style="color: #808080; font-style: italic;">/*novo import*/</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;
&nbsp;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">TimerEvent</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Timer</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">/*importação da API Box2D*/</span>
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Dynamics</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Collision</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Collision</span>.<span style="color: #006600;">Shapes</span>.<span style="color: #66cc66;">*</span>;
	<span style="color: #0066CC;">import</span> Box2D.<span style="color: #006600;">Common</span>.<span style="color: #0066CC;">Math</span>.<span style="color: #66cc66;">*</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Box2DMX <span style="color: #0066CC;">extends</span> Sprite
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* Construtor da classe	*/</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Box2DMX<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* Incializa a aplicação*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			createWorld<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			createListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			createGround<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			debugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
                <span style="color: #808080; font-style: italic;">/*Método que realiza o DebugDraw*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> debugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> m_sprite:Sprite;
			m_sprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			addChild<span style="color: #66cc66;">&#40;</span>m_sprite<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			debug = <span style="color: #000000; font-weight: bold;">new</span> b2DebugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			debug.<span style="color: #006600;">m_sprite</span>=m_sprite;
			<span style="color: #808080; font-style: italic;">/*escala padrão do Box2D 30px = 1m*/</span>
			debug.<span style="color: #006600;">m_drawScale</span>=<span style="color: #cc66cc;">30</span>;
&nbsp;
			debug.<span style="color: #006600;">m_alpha</span> = <span style="color: #cc66cc;">1</span>;
&nbsp;
			debug.<span style="color: #006600;">m_fillAlpha</span>=<span style="color: #cc66cc;">0.5</span>;
&nbsp;
			debug.<span style="color: #006600;">m_lineThickness</span>=<span style="color: #cc66cc;">1</span>;
&nbsp;
			debug.<span style="color: #006600;">m_drawFlags</span> = b2DebugDraw.<span style="color: #006600;">e_shapeBit</span>
				|b2DebugDraw.<span style="color: #006600;">e_jointBit</span>
				|b2DebugDraw.<span style="color: #006600;">e_coreShapeBit</span>
				|b2DebugDraw.<span style="color: #006600;">e_aabbBit</span>
				|b2DebugDraw.<span style="color: #006600;">e_obbBit</span>
				|b2DebugDraw.<span style="color: #006600;">e_pairBit</span>
				|b2DebugDraw.<span style="color: #006600;">e_centerOfMassBit</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">/*aplica ao mundo o modo debug*/</span>
			world.<span style="color: #006600;">SetDebugDraw</span><span style="color: #66cc66;">&#40;</span>debug<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #808080; font-style: italic;">/* Define os listeners da simulação/game*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> createListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			timer = <span style="color: #000000; font-weight: bold;">new</span> Timer<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2000</span><span style="color: #66cc66;">&#41;</span>;
			timer.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, createBodies<span style="color: #66cc66;">&#41;</span>;
			timer.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			addEventListener<span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">ENTER_FRAME</span>, Update, <span style="color: #000000; font-weight: bold;">false</span>, 0, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* Instancia o mundo onde a simulação ocorrerá*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> createWorld<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* Definição dos limite do mundo*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> worldAABB:b2AABB = <span style="color: #000000; font-weight: bold;">new</span> b2AABB<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			worldAABB.<span style="color: #006600;">lowerBound</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span>-<span style="color: #cc66cc;">100.0</span>, -<span style="color: #cc66cc;">100.0</span><span style="color: #66cc66;">&#41;</span>;
			worldAABB.<span style="color: #006600;">upperBound</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100.0</span>, <span style="color: #cc66cc;">100.0</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">/* Difinição da gravidade atuante em todos os corpos desse mundo*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> gravity:b2Vec2=<span style="color: #000000; font-weight: bold;">new</span> b2Vec2<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">0.0</span>,<span style="color: #cc66cc;">10.0</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">/* Indica que os corpos devem permanecerem inativos	*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> doSleep:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">/* Construção do mundo*/</span>
			world = <span style="color: #000000; font-weight: bold;">new</span> b2World<span style="color: #66cc66;">&#40;</span>worldAABB, gravity, doSleep<span style="color: #66cc66;">&#41;</span>;
&nbsp;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* Cria o chão onde os corpos ficarão*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> createGround<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> body:b2Body;
			<span style="color: #000000; font-weight: bold;">var</span> bodyDef:b2BodyDef;
			<span style="color: #000000; font-weight: bold;">var</span> boxDef:b2PolygonDef;
&nbsp;
			bodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			bodyDef.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span>, <span style="color: #cc66cc;">12</span><span style="color: #66cc66;">&#41;</span>;
			bodyDef.<span style="color: #006600;">angle</span>=<span style="color: #cc66cc;">0.0</span>;
&nbsp;
			boxDef = <span style="color: #000000; font-weight: bold;">new</span> b2PolygonDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			boxDef.<span style="color: #006600;">SetAsBox</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">90</span>, <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span>;
			boxDef.<span style="color: #006600;">friction</span> = <span style="color: #cc66cc;">0.4</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">/* para corpos que nunca se moverão o
			* valor da densidade deve ser zero
			*/</span>
			boxDef.<span style="color: #006600;">density</span> = 0;
			bodyDef.<span style="color: #006600;">userData</span> = <span style="color: #000000; font-weight: bold;">new</span> PhysGround<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #0066CC;">width</span> = physScale <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">30</span>;
			bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #0066CC;">height</span> = physScale <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">3</span>;
&nbsp;
			addChild<span style="color: #66cc66;">&#40;</span>bodyDef.<span style="color: #006600;">userData</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			body=world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>bodyDef<span style="color: #66cc66;">&#41;</span>;
			body.<span style="color: #006600;">CreateShape</span><span style="color: #66cc66;">&#40;</span>boxDef<span style="color: #66cc66;">&#41;</span>;
			body.<span style="color: #006600;">SetMassFromShapes</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
		<span style="color: #808080; font-style: italic;">/*cria os atores da simulação*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> createBodies<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* representa o corpo rígido*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> body:b2Body;
&nbsp;
			<span style="color: #808080; font-style: italic;">/* será utilizado para representar
			* as características físicas do corpo rígido
			*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> bodyDef:b2BodyDef;
&nbsp;
			<span style="color: #808080; font-style: italic;">/*define um polígono e suas características físicas*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> boxDef:b2PolygonDef;
&nbsp;
			<span style="color: #808080; font-style: italic;">/*define um círculo e suas características físicas*/</span>
			<span style="color: #000000; font-weight: bold;">var</span> circleDef:b2CircleDef;
&nbsp;
			bodyDef = <span style="color: #000000; font-weight: bold;">new</span> b2BodyDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			bodyDef.<span style="color: #0066CC;">position</span>.<span style="color: #0066CC;">Set</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">15</span>+<span style="color: #cc66cc;">5</span>, 0<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #000000; font-weight: bold;">var</span> rX:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #cc66cc;">0.1</span>;
			<span style="color: #000000; font-weight: bold;">var</span> rY:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #cc66cc;">0.1</span>;
			<span style="color: #808080; font-style: italic;">//Caixa</span>
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">random</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&amp;</span>lt; <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				boxDef = <span style="color: #000000; font-weight: bold;">new</span> b2PolygonDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				boxDef.<span style="color: #006600;">SetAsBox</span><span style="color: #66cc66;">&#40;</span>rX, rY<span style="color: #66cc66;">&#41;</span>;
				boxDef.<span style="color: #006600;">density</span> = <span style="color: #cc66cc;">1.0</span>;
				boxDef.<span style="color: #006600;">friction</span> = <span style="color: #cc66cc;">0.5</span>;
				boxDef.<span style="color: #006600;">restitution</span> = <span style="color: #cc66cc;">0.2</span>;
&nbsp;
				bodyDef.<span style="color: #006600;">userData</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #0066CC;">width</span> = rX <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> physScale;
				bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #0066CC;">height</span> = rY <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> physScale;
&nbsp;
				body = world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>bodyDef<span style="color: #66cc66;">&#41;</span>;
				body.<span style="color: #006600;">CreateShape</span><span style="color: #66cc66;">&#40;</span>boxDef<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #808080; font-style: italic;">//Círculo</span>
			<span style="color: #66cc66;">&#123;</span>
				circleDef = <span style="color: #000000; font-weight: bold;">new</span> b2CircleDef<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				circleDef.<span style="color: #006600;">radius</span> = rX;
				circleDef.<span style="color: #006600;">density</span> = <span style="color: #cc66cc;">1.0</span>;
				circleDef.<span style="color: #006600;">friction</span> = <span style="color: #cc66cc;">0.5</span>;
				circleDef.<span style="color: #006600;">restitution</span> = <span style="color: #cc66cc;">0.2</span>;
&nbsp;
				bodyDef.<span style="color: #006600;">userData</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #0066CC;">width</span> = rX <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> physScale;
				bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #0066CC;">height</span> = rX <span style="color: #66cc66;">*</span> <span style="color: #cc66cc;">2</span> <span style="color: #66cc66;">*</span> physScale;
&nbsp;
				body = world.<span style="color: #006600;">CreateBody</span><span style="color: #66cc66;">&#40;</span>bodyDef<span style="color: #66cc66;">&#41;</span>;
				body.<span style="color: #006600;">CreateShape</span><span style="color: #66cc66;">&#40;</span>circleDef<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			bodyDef.<span style="color: #006600;">userData</span>.<span style="color: #006600;">x</span> = body.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span> <span style="color: #66cc66;">*</span>physScale ;
			body.<span style="color: #006600;">SetMassFromShapes</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			addChild<span style="color: #66cc66;">&#40;</span>bodyDef.<span style="color: #006600;">userData</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/*atualiza o posicionamento dos atores*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> Update<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			world.<span style="color: #006600;">Step</span><span style="color: #66cc66;">&#40;</span>timeStep, iterations<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// Pare cada corpo no mundo atualiza a sua posição e rotação</span>
			<span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> body:b2Body = world.<span style="color: #006600;">GetBodyList</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; body; body = body.<span style="color: #006600;">GetNext</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>body.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> is Sprite<span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					body.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span> = body.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">x</span> <span style="color: #66cc66;">*</span> physScale;<span style="color: #808080; font-style: italic;">//metros para pixels</span>
					body.<span style="color: #006600;">GetUserData</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">y</span> = body.<span style="color: #006600;">GetPosition</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">y</span> <span style="color: #66cc66;">*</span> physScale;<span style="color: #808080; font-style: italic;">//metros para pixels</span>
					body.<span style="color: #006600;">GetUserData</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">rotation</span> = body.<span style="color: #006600;">GetAngle</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">*</span> <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">180</span><span style="color: #66cc66;">/</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">PI</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> world:b2World;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> iterations:<span style="color: #0066CC;">int</span> = <span style="color: #cc66cc;">10</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> timeStep:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">1.0</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">30.0</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> physScale = <span style="color: #cc66cc;">30.0</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> timer:Timer;
                <span style="color: #808080; font-style: italic;">/*novo atributo para aplicar o DebugDraw*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> debug:b2DebugDraw;
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>As modificações começaram com a adição da classe MovieClip que será usada como dado do usuário:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;">package
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">Sprite</span>;
        <span style="color: #808080; font-style: italic;">/*novo import*/</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;</pre></div></div>

<p>Aos atributos foi adicionado um novo que serve para realizar o DebugDraw da classe b2DebugDraw:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;">		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> physScale = <span style="color: #cc66cc;">30.0</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> timer:Timer;
                <span style="color: #808080; font-style: italic;">/*novo atributo para aplicar o DebugDraw*/</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> debug:b2DebugDraw;
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Tanto para criar o círculo quanto para criar os poligonos a classe de dado de usuários é a classe MovieClip, com ela fica mais fácil visualizar o comportamento dos corpos quanto ao seu estado de atividade que veremos mais à frente no texto:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;">bodyDef.<span style="color: #006600;">userData</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>A mudança mais importante foi a criação de um novo método chamado debugDraw():</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript actionscript" style="font-family:monospace;"><span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> debugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> m_sprite:Sprite;
	m_sprite = <span style="color: #000000; font-weight: bold;">new</span> Sprite<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	addChild<span style="color: #66cc66;">&#40;</span>m_sprite<span style="color: #66cc66;">&#41;</span>;
	debug = <span style="color: #000000; font-weight: bold;">new</span> b2DebugDraw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	debug.<span style="color: #006600;">m_sprite</span>=m_sprite;
	<span style="color: #808080; font-style: italic;">/*escala padrão do Box2D 30px = 1m*/</span>
	debug.<span style="color: #006600;">m_drawScale</span>=<span style="color: #cc66cc;">30</span>;
	debug.<span style="color: #006600;">m_alpha</span> = <span style="color: #cc66cc;">1</span>;
&nbsp;
	debug.<span style="color: #006600;">m_fillAlpha</span>=<span style="color: #cc66cc;">0.5</span>;
&nbsp;
	debug.<span style="color: #006600;">m_lineThickness</span>=<span style="color: #cc66cc;">1</span>;
&nbsp;
	debug.<span style="color: #006600;">m_drawFlags</span> = b2DebugDraw.<span style="color: #006600;">e_shapeBit</span>
		|b2DebugDraw.<span style="color: #006600;">e_jointBit</span> <span style="color: #808080; font-style: italic;">/*mostra todos os Joints da Cena*/</span>
		|b2DebugDraw.<span style="color: #006600;">e_coreShapeBit</span> <span style="color: #808080; font-style: italic;">/*utilizaado para observar colisões contínuas*/</span>
		|b2DebugDraw.<span style="color: #006600;">e_aabbBit</span> <span style="color: #808080; font-style: italic;">/*mostra o eixo de coordenados dos corpos*/</span>
		|b2DebugDraw.<span style="color: #006600;">e_obbBit</span> <span style="color: #808080; font-style: italic;">/*mostra os bouding boxes*/</span>
		|b2DebugDraw.<span style="color: #006600;">e_pairBit</span> <span style="color: #808080; font-style: italic;">/*mostra um vetor que parte do centro dos corpos para os outros que estão em contado*/</span>
		|b2DebugDraw.<span style="color: #006600;">e_centerOfMassBit</span> ;<span style="color: #808080; font-style: italic;">/*mostra o centro de massa dos Corpos*/</span>
	<span style="color: #808080; font-style: italic;">/*aplica ao mundo o modo debug*/</span>
	world.<span style="color: #006600;">SetDebugDraw</span><span style="color: #66cc66;">&#40;</span>debug<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>debug.m_drawFlags é um inteiro sem sinal com 7 bits que podem estar ligados ou não dependendo do OR (OU) resultante da combinação de uma mais flags unidos pelo OR bit a bit representado pelo &#8216;|&#8217;, comumente chamado de Pipe.</p>
<p>No debugdraw você também observa que alguns corpos possuem cores diferentes de outros. A cor vermelha indica que o corpo está dormindo, ou seja, o existem cálculos matemáticos/físicos sendo realizados para ele, esse fato é muito é muito importante para que haja uma maior performance reduzindo o consumo de processamento desnecessarimante. Os corpos cinzas estão em movimento, e os verdes são corpos estáticos, como por exemplo paredes e obstáculos.</p>
<div id="attachment_451" class="wp-caption alignleft" style="width: 580px"><a href="http://www.mxstudio.com.br/wp-content/uploads/2009/06/box2e1.jpg"><img class="size-full wp-image-451" title="box2e1" src="http://www.mxstudio.com.br/wp-content/uploads/2009/06/box2e1.jpg" alt="Estados" width="570" height="460" /></a><p class="wp-caption-text">Estados</p></div>
<p>Os arquivos deste tutorial podem ser baixados aqui:<br />
<a href="http://www.mxstudio.com.br/wp-content/uploads/2009/06/box2d.zip">http://www.mxstudio.com.br/wp-content/uploads/2009/06/box2d.zip</a></p>
<p>Faça diversas combinações dessas flags para você verificar visualmente como os corpos se comportam. Até a próxima.</p>
<p>Website: <strong><a href="http://marciosilva.net">www.marciosilva.net</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/box2d-modo-debugdraw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Destaque do Fórum: Dúvidas Frequentes de Flash</title>
		<link>http://www.mxstudio.com.br/flash/destaque-do-forum-duvidas-frequentes-de-flash/</link>
		<comments>http://www.mxstudio.com.br/flash/destaque-do-forum-duvidas-frequentes-de-flash/#comments</comments>
		<pubDate>Thu, 14 May 2009 13:59:47 +0000</pubDate>
		<dc:creator>Danilo Santana</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[dúvidas]]></category>
		<category><![CDATA[forum]]></category>

		<guid isPermaLink="false">http://www.mxstudio.com.br/?p=2445</guid>
		<description><![CDATA[Salve pessoal,
Depois de ver muitas perguntas de assuntos que já foram muito discutidos no fórum, resolvi criar esse tópico com conteúdo sobre as principais dúvidas sobre Flash.
São tópicos importantes, dúvidas quentes e resoluções de problemas comuns da comunidade.
Esse tópico tem um bom tempo já, mas como tem uma acervo legal e estará sendo continuamente atualizado [...]]]></description>
			<content:encoded><![CDATA[<p>Salve pessoal,</p>
<p>Depois de ver muitas perguntas de assuntos que já foram muito discutidos no fórum, resolvi criar esse tópico com conteúdo sobre as principais dúvidas sobre Flash.</p>
<p>São tópicos importantes, dúvidas quentes e resoluções de problemas comuns da comunidade.<br />
Esse tópico tem um bom tempo já, mas como tem uma acervo legal e estará sendo continuamente atualizado pela nossa equipe, vale a visita ANTES de postar novas dúvidas.</p>
<p><a title="FAQ - Dúvidas Frequentes de Flash" href="http://www.mxstudio.com.br/forum/index.php?showtopic=10554" target="_blank">http://www.mxstudio.com.br/forum/index.php?showtopic=10554</a></p>
<p>Aproveitem e com o tempo postem links bacanas também.</p>
<p>Abraco,<br />
<strong>Danilo Santana &#8211; Administrador do Portal MXSTUDIO</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mxstudio.com.br/flash/destaque-do-forum-duvidas-frequentes-de-flash/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	<!-- google_ad_section_end --></channel>
</rss>
