<?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>Lucas Marçal &#187; Interface</title>
	<atom:link href="http://www.lucasmarcal.com.br/blog/index.php/category/tutoriais/interface/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lucasmarcal.com.br/blog</link>
	<description>Blog Oficial</description>
	<lastBuildDate>Wed, 11 Aug 2010 17:50:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Slide Itens em Actionscript 3.0</title>
		<link>http://www.lucasmarcal.com.br/blog/index.php/2009/11/slide-itens-em-actionscript-3-0/</link>
		<comments>http://www.lucasmarcal.com.br/blog/index.php/2009/11/slide-itens-em-actionscript-3-0/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 00:34:54 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Destaque]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[FullSlide]]></category>

		<guid isPermaLink="false">http://www.lucasmarcal.com.br/blog/?p=50</guid>
		<description><![CDATA[Classe que cria um slide na vertical e na horizontal usando Actionscript 3.0]]></description>
			<content:encoded><![CDATA[<p>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;<br />
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!<br />
Lembre-se siga-me no Twitter <a href="http://www.twitter.com/lmcosta">@lmcosta</a></p>
<p>Classe FullSlide.as</p>
<pre class="brush: as3; first-line: 8; gutter: false; pad-line-numbers: false; wrap-lines: false;">
/**
 * @author  Lucas Marçal
 * @link    www.lucasmarcal.com.br/blog
 * @email   inbox@lucasmarcal.com.br
 * @version 1.0
 */
package lmcosta.slide
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import gs.*;
	import gs.easing.*;

	public class FullSlide extends MovieClip
	{
		/**
		 * DEFININDO PROPRIEDADES
		 */
		private var itensMc:Array;
		private var tipoSlide:String;
		private var posX:Number;
		private var posY:Number;
		private var distanciaItens:Number;
		private var distanciaItensFoco:Number;
		private var tempoEase:Number;
		private var distancia:Number;
		private var itemAtual:Number;
		private var itemX:Number;
		private var itemY:Number;

		public function FullSlide() {}

		/**
		 *
		 * @param	tipo:            Tipo de alinhamento X ou Y
		 * @param	arr :            Array que contém os MovieClips
		 * @param	distancia:       Distancia dos MovieClips na hora do alinhamento
		 * @param	foco:            Distancia que o item deve se mover
		 * @param	indiceAtual:     MovieClip Atual
		 * @param	posicaoX:        Posição em X
		 * @param	posicaoY:        Posição em Y
		 */
		public function setSlide(tipo:String,arr:Array,distancia:Number, foco:Number,indiceAtual:Number,posicaoX:Number,posicaoY:Number):void
		{
			this.tipoSlide = tipo;
			this.itensMc = arr;
			this.itemAtual = indiceAtual;
			this.distanciaItens = distancia;
			this.distanciaItensFoco = foco;
			this.posX = posicaoX;
			this.posY = posicaoY;
			this.tempoEase = 0.5;
			setPosItens();
		}

		private function setPosItens():void
		{

			for (var i:Number = 0; i &lt; this.itensMc.length; i++)
			{
				if (this.tipoSlide == &quot;Y&quot;)
				{
					this.distancia = this.itemAtual - i;
					this.itemY = this.posY + (this.distancia * - this.distanciaItens);
					this.itensMc[i].x = Math.round(this.posX);
					if (this.distancia != 0)
					{
						this.itemY += (Math.round(this.distanciaItensFoco) - Math.round(this.distanciaItens)) * (Math.round(this.distancia) &gt; 0 ? -1 : +1);
					}
					TweenMax.to(this.itensMc[i], this.tempoEase, {y:Math.round(this.itemY),ease:Expo.easeOut});
				}
				else
				{
					this.distancia = this.itemAtual - i;
					this.itemX = this.posX + (this.distancia * - this.distanciaItens);
					this.itensMc[i].y = Math.round(this.posY);
					if (this.distancia != 0)
					{
						this.itemX += (Math.round(this.distanciaItensFoco) - Math.round(this.distanciaItens)) * (Math.round(this.distancia) &gt; 0 ? -1 : +1);
					}
					TweenMax.to(this.itensMc[i], this.tempoEase, {x:Math.round(this.itemX),ease:Expo.easeOut});
				}
				if(i - this.itensMc.length != 1)
				{
					TweenMax.to(this.itensMc[i], this.tempoEase, { blurFilter: { blurX:10, blurY:10, quality:1 }, z:1 } );
				}
				if (this.tempoEase &gt; 0)
				{
					TweenMax.to(this.itensMc[this.itemAtual], this.tempoEase/2, {blurFilter:{blurX:0,blurY:0, quality:2},z:1});
				}
				var refItem:MovieClip = this.itensMc[i] as MovieClip;
				refItem.buttonMode = true;
				refItem.addEventListener(MouseEvent.MOUSE_DOWN , onDown);
				refItem.addEventListener(MouseEvent.MOUSE_OVER , onOver);
				refItem.addEventListener(MouseEvent.MOUSE_OUT , onOut);
				refItem.nome = i;
			}
		}

		public function moveItens(indice:Number):void
		{
			this.setItens(this.itemAtual + indice);
		}

		private function setItens(indice:Number):void
		{

			if (indice &lt; 0) indice = 0;
			if (indice &gt; this.itensMc.length - 1) indice = this.itensMc.length - 1;
			if (indice != this.itemAtual)
			{
				this.itemAtual = indice;
				this.setPosItens();
			}
		}

		private function onOut(e:Event):void
		{
			TweenMax.to(e.target, 0.2, { tint:null, ease:Linear.easeNone } );
		}

		private function onOver(e:Event):void
		{
			TweenMax.to(e.target, 0.2, { tint:0xcccccc, ease:Linear.easeNone } );
		}

		private function onDown(e:Event):void
		{
			//trace(&quot;item &quot; + e.target.nome);
			this.setItens(e.target.nome)
		}

	}

}
</pre>
<p>BotaoControle.as</p>
<pre class="brush: as3; first-line: 8; gutter: false; pad-line-numbers: false; wrap-lines: false;">
/**
 * @author  Lucas Marçal
 * @link    www.lucasmarcal.com.br/blog
 * @email   inbox@lucasmarcal.com.br
 * @version 1.0
 */
package lmcosta.slide
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import lmcosta.slide.FullSlide

	public class BotaoControle extends FullSlide
	{
		internal var ref:FullSlide
		internal var indice:Number;

		public function BotaoControle(_objeto:MovieClip,_fullSlide:FullSlide,_qtdItemMove:Number)
		{
			this.ref = _fullSlide;
			this.indice = _qtdItemMove;

			_objeto.buttonMode = true;
			_objeto.addEventListener(MouseEvent.MOUSE_DOWN, onDow);
		}

		private function onDow(e:MouseEvent):void
		{
			this.ref.moveItens(this.indice);
		}
	}

}
</pre>
<p>Coloque esse código no frame de action da sua aplicação e crie os MovieClips.</p>
<pre class="brush: as3; first-line: 8; gutter: false; pad-line-numbers: false; wrap-lines: false;">
import lmcosta.slide.FullSlide
import lmcosta.slide.BotaoControle;

var mySlide:FullSlide = new FullSlide()
var _arr:Array =  new Array(mc1,mc2,mc3,mc4,mc5)

this.mySlide.setSlide(&quot;X&quot;,_arr,mc1.width, mc1.width,0,184,72);
var refVai:BotaoControle = new BotaoControle(btVai.btAtiva,this.mySlide,1)
var refVem:BotaoControle = new BotaoControle(btVem.btAtiva,this.mySlide,-1)

addChild(this.mySlide);
</pre>
<p><a href="http://www.lucasmarcal.com.br/labs/FullSlide.html">Exemplo</a><br />
<a href="http://www.lucasmarcal.com.br/labs/FullSlide.rar">Arquivos do Tutorial</a></p>
<p>Abraço a todos, semana que vem tem mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucasmarcal.com.br/blog/index.php/2009/11/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.lucasmarcal.com.br/blog/index.php/2009/10/validando-campos-de-formulario-no-actionscript-30/</link>
		<comments>http://www.lucasmarcal.com.br/blog/index.php/2009/10/validando-campos-de-formulario-no-actionscript-30/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 06:10:44 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Destaque]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Formularios]]></category>
		<category><![CDATA[Validação]]></category>

		<guid isPermaLink="false">http://lucasmarcal.com.br/blog/?p=1</guid>
		<description><![CDATA[Classe inicial para validação de campos de  formulario]]></description>
			<content:encoded><![CDATA[<p>Nesse tutorial vamos trabalhar a validação de dados de um formulário com uma classe que desenvolvi para um projeto que trabalhei.</p>
<p>No meu primeiro artigo sobre Actionscript 3.0 eu mostro uma classe que eu fiz para validar campos de formularios.</p>
<p>Então agora chega de enrrolação e vamos ao que interessa, lembrando que isso é apenas uma experiência e você deve tentar encontrar formas melhores de fazer isso!</p>
<pre class="brush: as3; first-line: 8; gutter: false; highlight: [10,11]; pad-line-numbers: false; wrap-lines: false;">
/**
 * @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(&amp;amp;quot;Mudando&amp;amp;quot;)
   }
 * */
package owinteractive.utils
{
	import flash.display.MovieClip;
	import flash.events.FocusEvent;
	import flash.text.TextField;
	import gs.easing.*
	import gs.*

	public class Validation extends MovieClip
	{
		public var textInput:   TextField;
		public var tipo:        String;
		public  var textStatus:  Boolean;
		public var textOutput:  TextField;
		public var textName:    String;
		public var mcStatus:    MovieClip;
		public var limpar:      Boolean;

		public function Validation (_txtCamp:TextField,_type:String,_txtResp:TextField,_txtName:String,_mcStatus:MovieClip,_clear:Boolean):void
		{
			this.textInput = _txtCamp;
			this.tipo = _type;
			this.textStatus = false;
			this.textOutput = _txtResp;
			this.textName = _txtName;

			if (_mcStatus != null)
			{
				this.mcStatus = _mcStatus;
			}
			this.limpar = _clear;
			this.textInput.addEventListener(FocusEvent.FOCUS_IN, onIn);
			this.textInput.addEventListener(FocusEvent.FOCUS_OUT,onOut);
		}

		public function onIn(f:FocusEvent):void
		{
			//trace(&amp;amp;quot;Selecionou &amp;amp;quot; + f.target.name)
			if (this.limpar == true)
			{
				f.target.text = &amp;amp;quot;&amp;amp;quot;
			}
			else
			{
				trace(&amp;amp;quot;Não Limpar campo&amp;amp;quot;)
			}
		}

		public function onOut(f:FocusEvent):void
		{
			if(this.tipo == &amp;amp;quot;email&amp;amp;quot;)
			{
				this.emailValidation(f)
			}
			else
			{
				this.textValidation(f)
			}
		}

		public function textValidation(t:*):void
		{
			if(t.target.text == &amp;amp;quot;&amp;amp;quot;)
			{
				//trace(&amp;amp;quot;Campo Vazio&amp;amp;quot;)
				this.textStatus = false
				this.textOutput.text = &amp;amp;quot;Preencher o campo &amp;amp;quot; + this.textName
				if (this.mcStatus != null)
				{
					this.mcStatus.gotoAndStop(3)
				}
			}
			else
			{
				//trace(&amp;amp;quot;Campo Preenchido&amp;amp;quot;)
				this.textStatus = true
				if (this.mcStatus != null)
				{
					this.mcStatus.gotoAndPlay(2)
					TweenMax.to(this.mcStatus, 0.5, { alpha:0, ease:Linear.easeNone,delay:2,onComplete:retornaStatus} );
				}

			}
		}
		public function emailValidation(t:*):void
		{
			var email:String = t.target.text;
			var arroba:Number = email.indexOf(&amp;amp;quot;@&amp;amp;quot;);
			var ponto:Number = email.lastIndexOf(&amp;amp;quot;.&amp;amp;quot;);
			var resp:Boolean = arroba &amp;amp;gt; 0 &amp;amp;amp;&amp;amp;amp; ponto &amp;amp;gt; arroba;

			if(resp == true)
			{
				//trace(&amp;amp;quot;Email Correto&amp;amp;quot;)
				this.textStatus = true
				if (this.mcStatus != null)
				{
					this.mcStatus.gotoAndStop(2);
					TweenMax.to(this.mcStatus, 0.5, { alpha:0, ease:Linear.easeNone,delay:2,onComplete:retornaStatus} );
				}

			}
			else
			{
				//trace(&amp;amp;quot;Preencher corretamente&amp;amp;quot;)
				this.textStatus = false
				this.textOutput.text = &amp;amp;quot;Campo &amp;amp;quot; + this.textName + &amp;amp;quot; incorreto&amp;amp;quot;
				if (this.mcStatus !=  null)
				{
					this.mcStatus.gotoAndStop(3)
				}

			}
		}

		public function getTextStatus():Boolean
		{
			return textStatus
		}
		public function retornaStatus():void
		{
			if (this.mcStatus != null)
			{
				this.mcStatus.gotoAndStop(1);
				this.mcStatus.alpha = 1
			}

		}

	}
}
</pre>
<p>Abraço a todos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucasmarcal.com.br/blog/index.php/2009/10/validando-campos-de-formulario-no-actionscript-30/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
