June 27th, 2009  | Tags:

Dai pessoal.

Nos dias 06 e 07 de julho, vai ser realizado o Flex Mania, um evento com nomes carimbados do cenário. Cenário esse que vem crescendo e crescendo a cada dia. Eu como colaborador para que isso aconteça, estarei palestrando sobre desenvolvimento e estruturação de hotsites.
Irei falar desde o conceito e um motivo de porque ter um hotsite até a partes técnicas de estruturação de arquivos e melhor forma de se programar tal.
Então não custa nada dar uma averiguada no www.flexmania.com.br, conto com vocês pessoal. Abraço e até lá.

January 5th, 2009  | Tags:

Pois é, é isso mesmo, para quem não sabe, estou trocando Curitiba pelo Rio de Janeiro. Trocando de agência, e trocando de vida. Mudanças fazem bem, ainda mais se falando que 2008 não foi um dos melhores anos pra mim.

Mas só para deixar o registro, estou indo trabalhar na Seagulls Fly, agência renomada no meio do 3D no Brasil. Quem nunca viu o comercial em que Gisele Bundchen enchia o corpo de tatuagens vivas? Ou a fabulosa fábrica da Volkswagen? Pois é, vou me juntar a equipe dos caras, integrar a parte de Actionscript ao lado de Thalles Freitas, flash developer residente.

Vai ser ótimo para o desenvolvimento de técinas com patterns e poliformismo. Também como papervision 3d entre outras. Acredito que é o passo certo no momento certo.

Home Seagulls FlyPara quem não conhece a Seagulls vale a pena dar uma olhada no site da agência, é bem interessante.

Mas por hora é isso, prometo que em 2009 vou dar um pouco mais de atenção para o blog :)

Grande abraço, paz e ótimo 2009 para todos nós.

October 24th, 2008  | Tags: , ,

Dai pessoal,

Fiquei offline do blog por um tempo, muita correria, como acontece com todos hehe. Mas venho aqui novamente mostrar como se fazer um player de vídeo com netStream.
Não é nada cabuloso de outro mundo. Vamos resolver essa.

Primeiro baixe a classe TweenMax para transições e algumas animaçõeszinhas, dezipe o arquivo na pasta que vai conter o seu fla.

Crie uma pasta contents e dentro dela insira o seu flv com o nome 01.flv.

Agora crie um arquivo novo no flash com 322 x 246, 30 fps, com o nome de videoPlayer.fla . Crie o seu player da forma que achar mais bunito, mas seguindo esses padrões.

1 - Primeiro de tudo crie um MC pai com o instance name de “video_mc”, dentro dele que ficará todo nosso player, isso para facilitar o manuseio depois pra algum projeto.

2 - Botão play e pause = Ficam no mesmo botão, pause no primeiro frame, e play no segundo frame. Instance name de “play_mc”.

3 - Botão stop = Instance name de “stop_mc”.

4 - Botão volume =     Um botão para o setar o volume e o mute, primeiro frame dele o volume ok e no segundo o mute. Instance name de “volume_mc”.

5 - Botão SeekDrag = Cuidado aqui, o register point do video_mc tem que ficar exatamente no ponto de início do seekDrag, isso para o cálculo que vamos precisar executar depois. O seu instance name é “dragSeekBar_mc”.

6 - ProgressBar = Mesmo princípio do SeekDrag, seu instance name é “progressBar_mc”. Seu register point tem que ser alinhado a direita.

7 - Aqui já temos o primeiro macetinho, temos que criar uma máscara para fazer o progress “andar”, então crie duas camadas acima da camada do ProgressBar, na primeira use um shape exatamente no mesmo tamanho width do ProgressBar transforme-o em Mc e de o instance name de “maskProgress_mc”. Seu register point tem que ser alinhado a direita.

Na outra camada ponha o progreesBar em outra cor, diferenciando o que rodou e o que tem pra ser rodado, transforme em máscara e feito.

8 - Agora vamos adicionar nosso video source no stage, vá na library, bem em baixo, ao lado da lixeirinha, clique com o botão direito e vá até new Video, como name ponha “player_ns”. Adicione ele no stage, arrastando da library.

9 - E por útlimo o botão play do inicio do player. Uma camada por cima de tudo com o instance name de “startVideo_mc”, e dentro desse mc o botão play com o instance name de “play_mc”.

Ufa, fechamos a parte de layout. Quem disse que é facinho? hehe

Bom, se você seguiu todos os passos acima corretamente, é hora de irmos para o code, que inclusive já está bemmmm comentado, para isso abra um arquivo de actionscript novo e o nomeie de videoPlayer.as

View CodeACTIONSCRIPT
 
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.net.NetConnection;
	import flash.net.NetStream;
	import gs.TweenMax;
	import gs.easing.*;
	import flash.events.MouseEvent;
	import flash.media.SoundTransform;
	import flash.geom.Rectangle;
	import flash.display.LoaderInfo;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
 
	/**
	* ...
	* @author Duende
	* @link http://www.marceloduende.com.br
	*/
	public class videoPlayer extends MovieClip
	{
		//*************************************************************
		//
		// !!!!!!!!!!!!!!!!!!!!!NetStream!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		//
		//*************************************************************
 
		private var Duration:int = 15000;
		private var actualTime:Number;
		private var actualLength:Number;
		private var setVolume:Number = 1;
		private var rectArea:Rectangle = new Rectangle(0, 107, 186, 0);
		private var dragTime:Number;
		private var urlXML:URLRequest = new URLRequest();
		private var urlString:String  = new String();
		private var customClient:Object = {onMetaData:metaDataHandler};
		private var st:SoundTransform = new SoundTransform();
		private var netConnection:NetConnection = new NetConnection();
		private var netStream:NetStream;
 
 
		public function videoPlayer():void
		{
 
 
			urlString = "contents/01.flv";
			netConnection.connect(null);
			netStream = new NetStream(netConnection);
 
			video_mc.player_ns.attachNetStream(netStream);
			netStream.play(urlString);
			netStream.pause();
			netStream.seek(1);
			video_mc.play_mc.gotoAndStop(2);
 
			netStream.client = customClient;
			netStream.soundTransform = st;
			st.volume = 1;
 
			video_mc.play_mc.addEventListener(MouseEvent.MOUSE_DOWN, PauseVideo);
			video_mc.play_mc.buttonMode = true;
			video_mc.stop_mc.addEventListener(MouseEvent.MOUSE_DOWN, StopVideo);
			video_mc.stop_mc.buttonMode = true;
			video_mc.volume_mc.addEventListener(MouseEvent.MOUSE_DOWN, SetVolumeVideo);
			video_mc.volume_mc.buttonMode = true;
			video_mc.dragSeekBar_mc.addEventListener(MouseEvent.MOUSE_DOWN, DragSeek);
 
 
		}
 
		private function metaDataHandler(infoObject:Object):void {
			Duration = infoObject.duration;
			addEventListener(Event.ENTER_FRAME, DragSeekBar);
		}
 
 
		/**
		* ...
		* @usage Play/Pause Video
		*/
 
 
		private function PauseVideo(e:MouseEvent):void
		{
			if (video_mc.play_mc.currentFrame == 1) 
			{
				video_mc.play_mc.gotoAndStop(2);
				netStream.pause();
			} else {
 
				video_mc.play_mc.gotoAndStop(1);
				netStream.play(urlString);
				netStream.seek(actualTime);
			}
		}
 
 
		/**
		* ...
		* @usage Stop Video
		*/
 
 
		private function StopVideo(e:MouseEvent):void
		{
			video_mc.dragSeekBar_mc.removeEventListener(Event.ENTER_FRAME, DragSeekBar);
			netStream.pause();
			netStream.seek(0);
			video_mc.play_mc.gotoAndStop(2);
			video_mc.play_mc.addEventListener(MouseEvent.MOUSE_DOWN, PauseVideo);
 
		}
 
 
		/**
		* ...
		* @usage Set Volume Video
		*/
 
 
		private function SetVolumeVideo(e:MouseEvent):void
		{
			if (video_mc.volume_mc.currentFrame == 1) 
			{
				addEventListener(Event.ENTER_FRAME, FadeVolume);
				video_mc.volume_mc.gotoAndStop(2);
 
			} else {
				addEventListener(Event.ENTER_FRAME, FadeVolume);
				video_mc.volume_mc.gotoAndStop(1);
 
			}
		}
 
		private function FadeVolume(e:Event):void
		{
			if (video_mc.volume_mc.currentFrame == 2) 
			{
				setVolume -= 0.1;
				if (setVolume <= 0)
				{
					setVolume = 0;
					removeEventListener(Event.ENTER_FRAME, FadeVolume);
				}
 
			} else {
				setVolume += 0.1;
				if (setVolume >= 1)
				{
					setVolume = 1;
					removeEventListener(Event.ENTER_FRAME, FadeVolume);
				}
			}
			st.volume = setVolume;
			netStream.soundTransform = st;
		}
 
 
		/**
		* ...
		* @usage Drag Seek Bar
		*/
 
		private function DragSeekBar(e:Event):void
		{
			actualTime = netStream.time;
			video_mc.dragSeekBar_mc.x = actualTime / Duration * video_mc.progressBar_mc.width;
			video_mc.maskProgress_mc.scaleX = actualTime / Duration;
		}
 
 
 
		private function DragSeek(e:MouseEvent):void
		{
			netStream.pause();
			removeEventListener(Event.ENTER_FRAME, DragSeekBar);
			addEventListener(MouseEvent.MOUSE_UP, DragSeekOut);
			e.currentTarget.startDrag(false, rectArea);
		}
 
		private function DragSeekOut(e:MouseEvent):void
		{
			video_mc.play_mc.gotoAndStop(1);
			dragTime = int((video_mc.dragSeekBar_mc.x / video_mc.progressBar_mc.width) * Duration);
			e.currentTarget.stopDrag();
			removeEventListener(MouseEvent.MOUSE_UP, DragSeekOut);
			addEventListener(Event.ENTER_FRAME, DragSeekBar);
			netStream.play(urlString);
			netStream.seek(dragTime);
		}
	}
 
}

Ok, estamos com tudo em cima, agora é só definir o classPath, no flash na barra properties, insira videoPlayer e o flash vai achar automaticamente sua classe. Agora só compilar e correr pro abraço

Fico perdido? Dessa vez eu libero o fonte, pega aqui

July 10th, 2008  | Tags:

Buenas, hoje eu e meu companheiro de trabalho e amigo Paulo Araujo, tivemos uma esncrenca pra resolver, mas resolvemo bem, uma função que recebesse qualquer tipo de valor, pois então desenvolvemos a classe abaixo.

Não vou ensinar mais passo a passo como colocar a classe para rodar no flash né, nos posts anteriores tem como, caso haja alguma dúvida.

View CodeACTIONSCRIPT
package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.display.Sprite;
	import flash.display.DisplayObject;
	/**
	* ...
	* @Marcelo Duende, Paulo Araujo Generic Function
	*/
	public class  genericFunction extends MovieClip
	{
		private var array:Array = [1, "lala"];
		private var number:Number = 1;
		private var string:String = "Duende";
 
		public function genericFunction()
		{
			Receive(array);//chamando a ação
		}
 
		private function Receive(geral:*)
		{
			var tipo = typeof geral;
			switch (tipo){
				case "object":
					if (geral is Array) {
						trace("Array");
						for(var i:int = 0; i<geral.length;i++){
							trace (typeof geral[i]);
						}
					}
					else if (geral is DisplayObject) {
						trace("DisplayObject");
						if (geral is Sprite) trace("Sprite");
						else if (geral is MovieClip) trace("MovieClip");
					}
					else trace("Outro tipo de Objeto");
				break;
				case "number":
					trace(tipo);
				break;
				case "string":
					trace(tipo);
				break;
			}
		}
	}
}

Abraço a todos

July 9th, 2008  | Tags:

Finalmente não preciso mais ouvir o maurivan nem ninguém me dizer… “Spiders do google passam por esse seu flash e nem da bola”.

Então SEO specialists, agora vocês podem contar com o flash em si para ajudar na indexação de conteúdo sem usar outras artimanhas, como os SWFObject e SWFAddress que eram como um “x” para spiders. A Adobe juntou-se ao Google e Yahoo para criar logo agora na próxima versão do Flash Player 10 arquivos swf totalmente compatíveis com spiders do Google e Yahoo.

Essa evolução na search engine optimization vai gerar um mercado ainda maior para o flash, não serão mais apenas sites institucionais e hotsites, com certeza teremos mais trabalho hehe, torço pra isso acontecer.

Abraço a todos

July 7th, 2008  | Tags:

Path Folower, é esse o nome que eu dou pra esse aplicativozinho, uma mini engine de games em as3. Só no seu fla, crie um mc que vai ser seu carrinho e o instancie de la_mc e ponha o class path como pathFolower, salve como pathFolower.fla.

Na mesma pasta crie um arquivo .as e salve-o como pathFolower.as e depois insira o seguinte no arquivo .as

View CodeACTIONSCRIPT
 
package
{
	//importando classes
	import flash.display.MovieClip;
	import flash.events.*;
	import caurina.transitions.Tweener;
	/**
	* ...
	* @marceloduende classezinha pra andar o carro
	*/
	public class  pathFolower extends MovieClip //iniciando a nossa classe
	{
		private var ang:Number;// angulo que vai receber os radianos
		private var length:int = 5; //o quanto ele vai no angulo ang
		private var angX:Number = 0; // valor da posição X
		private var angY:Number = 0; // valor da posição Y
		public function pathFolower()
		{
			stage.addEventListener(KeyboardEvent.KEY_DOWN, anda);//chamando a ação
		}
		private function anda(event:KeyboardEvent)
		{
			ang = la_mc.rotation * Math.PI / 180; //angulo em radianos
			angX = la_mc.x;
			angY = la_mc.y;
			switch (event.keyCode) //pegando valor do parâmetro
			{
				case 37: //botão esquerdo pressionado
					la_mc.rotation -= length;
				break;
				case 39: //botão direito pressionado
					la_mc.rotation += length;
				break;
				case 38: //botão para cima pressionado
					angX += Math.cos(ang) * 20;
					angY += Math.sin(ang) * 20;
					Tweener.addTween(la_mc, {x:angX, y:angY, time:1 } );
				break;
				case 40: //botão para baixo pressionado
					angX -= Math.cos(ang) * 20;
					angY -= Math.sin(ang) * 20;
					Tweener.addTween(la_mc, {x:angX, y:angY, time:1 } );
				break;
			}
		}
	}
}

Use as setas do teclado para mexer o robozinho :)

April 8th, 2008  | Tags:

Vamo lá, primeiro vamos organizar nossa pasta onde vai ficar o FLA. baixe essas classes aqui (serão necessárias para funcionar o arquivo). Agora dezipe os arquivos no diretório que você vai por o FLA.

Depois disso crie uma ou seis imagens com 200 x 200 pixels, eu deixei apenas uma imagem, mas é bom você fazer com 6 diferentes.

Ok, agora vamos ao flash, importe as imagens e transforme-as em MovieClip, na barra properties de cada MovieClip ponha o instance name de “face”, “face2″, “face3″, “face4″, “face5″ e “face6″, sem as aspas.

Ainda na barra de properties defina o blend como “Erase” para todos os MovieClips. e deixe-os no palco mesmo.

Agora vamos ao nosso código

View CodeACTIONSCRIPT
 
// importanto classes para o filme principal
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.objects.special.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.special.*;
import org.papervision3d.materials.shaders.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.lights.*;
import org.papervision3d.render.*;
import org.papervision3d.view.*;
import org.papervision3d.events.*;
import org.papervision3d.core.utils.*;
import org.papervision3d.core.utils.virtualmouse.VirtualMouse;
 
// definindo nosso viewport
var viewport:Viewport3D = new Viewport3D(0, 0, true, true);
// adicionando o viewport
addChild(viewport);
viewport.buttonMode = true;
// definindo o renderizador
var renderer:BasicRenderEngine = new BasicRenderEngine();
// definindo o palco 3d
var scene:Scene3D = new Scene3D();
// definindo camera
var camera:Camera3D = new Camera3D();
camera.zoom = 11;
camera.focus = 100;
// definindo nosso movieclip para adicionar os MCS como material do cubo
var mam:MovieMaterial = new MovieMaterial(face);
mam.interactive = true;
mam.smooth = true;
mam.animated = true;
 
var mam2:MovieMaterial = new MovieMaterial(face2);
mam2.interactive = true;
mam2.smooth = true;
mam2.animated = true;
 
var mam3:MovieMaterial = new MovieMaterial(face3);
mam3.interactive = true;
mam3.smooth = true;
mam3.animated = true;
 
var mam4:MovieMaterial = new MovieMaterial(face4);
mam4.interactive = true;
mam4.smooth = true;
mam4.animated = true;
 
var mam5:MovieMaterial = new MovieMaterial(face5);
mam5.interactive = true;
mam5.smooth = true;
mam5.animated = true;
 
var mam6:MovieMaterial = new MovieMaterial(face6);
mam6.interactive = true;
mam6.smooth = true;
mam6.animated = true;
// pegando as vars definidas e jogando na lista de materiais do cubo
var cube:Cube = new Cube(new MaterialsList({front:mam, back:mam2, left:mam3, right:mam4,top:mam5, bottom:mam6}), 200, 200, 200, 10, 10, 10);
scene.addChild(cube);
// adicionando o evento loop para movimentação do quadrado
addEventListener(Event.ENTER_FRAME, loop);
// funcção do loop
function loop(e:Event):void
{
var xDist:Number = mouseX - stage.stageWidth * 0.5;
var yDist:Number = mouseY - stage.stageHeight * 0.5;
cube.rotationY += xDist * 0.05;
cube.rotationX += -yDist * 0.05;
renderer.renderScene(scene, camera, viewport);
}
// definindo clique para cada lado do quadrado
face.addEventListener(MouseEvent.CLICK, faceClick);
 
function faceClick(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.marceloduende.com.br"));
}
 
face2.addEventListener(MouseEvent.CLICK, face2Click);
 
function face2Click(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.marceloduende.com.br"));
}
 
face3.addEventListener(MouseEvent.CLICK, face3Click);
 
function face3Click(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.marceloduende.com.br"));
}
 
face4.addEventListener(MouseEvent.CLICK, face4Click);
 
function face4Click(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.marceloduende.com.br"));
}
 
face5.addEventListener(MouseEvent.CLICK, face5Click);
 
function face5Click(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.marceloduende.com.br"));
}
 
face6.addEventListener(MouseEvent.CLICK, face6Click);
 
function face6Click(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.marceloduende.com.br"));
}

Agora compile seu filme e brinque a vontade :)

Para baixar o arquivo acima clique aqui

March 20th, 2008  | Tags:

Olá pessoal.

Hoje vou mostrar um pouco do meu trabalho. Em parceria com a agência Midiaweb, foi desenvolvido um hotsite de páscoa para a Lacta, marca mundialmente conhecida da marca Kraft Foods da Alemanha.

Foi um trabalho árduo, pois teve alguns fatores (de saúde) que atrapalharam o projeto. Mas ta tudo resolvido :) O hotsite tem como objetivo principal vender o produto em destaque, no caso os ovos de páscoa, vários deles. Estão todos nas lojas Americanas e Pão de Açúcar como exclusividade, também deve ser achado em outros pontos de venda.

Vou dispor alguns prints do Hotsite e o “cast crew” do Hotsite que envolveu em torno de 15 pessoas.

Gerente de conta: Sérgio Coelho, Marcelo Biachi;

Gerente de projeto: Daniela Fernandes;

Atendimento: Julianne Fontoura, Carolina Veiga, Renata Adriazola;

Diretor de Arte: João Paulo;

Designers: João Paulo, Janara Lopes, Fabiano;

Flash Developer, XML e Client side: Marcelo Duende, Gabriel Gulbino;

Php Developer e Server side: André Arruda;

Esses são os nomes que deram vida ao hotsite, ao menos eu conto que seja, não sei se esqueci de alguém. Se esqueci mande e-mail avisando :)

HotSite

HotSite

E esse foi o hotsite :) Parabéns a todos os envolvidos. E principalmente a agência Midiaweb por me aturar :)

March 10th, 2008  | Tags:

Olá pessoal.

Hoje vou dar um tempo com códigos e fazer um post rápido sobre o novo hotsite da Coca-Cola Zero. Um projeto realmente perfeito. Sem erros, sem perda de qualidade em vista do prazo, com uma super equipe envolvida. Com certeza um dos melhores websites de 2008 até o momento.

Arte

Desenvolvido pela premiadíssima agência North Kingdom, com uma direção geral de Robert Lindström co-founder e designer da North Kingdom, e ilustradores como Anton Ericksson, Mikael Forsgren formaram uma gigante equipe de desenvolvimento, criação e externa.

Arte

Anton em sua ilustração.

Arte

Finalização.

Enfim, um super trabalho, uma super finalização. Perfeito, vale apena analizar e tomar por base para se fazer projetos melhores e melhores. E para quem quer ver mais sobre o projeto, eis o blog de Robert - Robert Lindström e quem quiser ver o projeto Coca-Cola Zero.

Um abraço

March 7th, 2008  | Tags:

Iaí galera, hoje vou postar um pouco sobre a classe tweener, a famosa “caurina”, me lembra taurina e me dá gás no trabalho hehe.

Bom, vamos lá, crie um arquivo no seu flash com as dimensões que quiser, eu usei 550 x 400, default do flash. Dentro dele insira uma bolinha e transforme-a em um Movie Clip depois no instance name ponha “anda_mc”. Esse vai ser o nosso objeto controlado. Salve o arquivo como “tweener.fla”.

Agora crie 5 botoes, instancie-os de:
xey_mc
scale_mc
alpha_mc
delay_mc
bezier_mc

respectivamente.

xey_mc: esse botão vai servir para mover nosso objeto no palco.

scale_mc: esse botão vai server para escalonar o objeto no palco .

alpha_mc: esse botão vai server para dar um alpha no objeto no palco .

delay_mc: esse botão vai server para dar um delay até acontecer a animação do objeto no palco.

bezier_mc: esse botão vai server para:

Esse é um método mais composto, ele pode dar varias direções ao um valor de x ou y. Criando concavos e tangentes na animação do objeto. Na classe abaixo eu criei uma animação em circulo com o _bezier, mas você pode usar apenas {x:0, y:100} por exemplo, que além de ir ao seu ponto original ele vai passar por esses pontos durante a animação.

Ok, agora no nosso classPath coloque “tweener”

Vamos para a classe agora.

Crie um arquivo .as e salve-o como tweener.as. Dentro desse arquivo ponha o seguinte.

View CodeACTIONSCRIPT
package {
 
 import caurina.transitions.Tweener;
 
 import flash.display.MovieClip;
 
 import flash.display.SimpleButton;
 
 import flash.events.MouseEvent;
 
 public class tweener extends MovieClip{
 
 	public function tweener():void{			// centralizando objeto no filme
 
 		Tweener.addTween(anda_mc,{x:stage.stageWidth/2, y:stage.stageHeight/2, time:1, transition:"easeOutExpo"})
 
// acao de clique no X e Y
 
 		xey_mc.addEventListener(MouseEvent.MOUSE_DOWN, Movimenta);
 
// acao de clique no scaleX e scaleY
 
 		scale_mc.addEventListener(MouseEvent.MOUSE_DOWN, Escalonamento);
 
// acao de clique no alpha
 
 		alpha_mc.addEventListener(MouseEvent.MOUSE_DOWN, Alpha);
 
// acao de clique no delay
 
 		delay_mc.addEventListener(MouseEvent.MOUSE_DOWN, Delay);
 
// acao de clique no delay
 
 		bezier_mc.addEventListener(MouseEvent.MOUSE_DOWN, Bezier);
 
}
 
// funcao de movimento
 
 	private function Movimenta(e:MouseEvent):void{
 
 		Tweener.addTween(anda_mc,{x:100, y:100, time:1, transition:"easeOutExpo", onComplete:VoltaMovimenta});
 
 	}
 
 	private function VoltaMovimenta():void{
 
 		Tweener.addTween(anda_mc,{x:stage.stageWidth/2, y:stage.stageHeight/2, time:1, transition:"easeOutExpo"})
 
 	}
 
// funcao de escalonamento
 
 	private function Escalonamento(e:MouseEvent):void{
 
 		Tweener.addTween(anda_mc,{scaleX:4, scaleY:4, time:1, transition:"easeOutExpo", onComplete:VoltaEscalonamento});
 
 	}
 
 	private function VoltaEscalonamento():void{
 
 		Tweener.addTween(anda_mc,{scaleX:1, scaleY:1, time:1, transition:"easeOutExpo"})
 
 	}
 
// funcao de alpha
 
 	private function Alpha(e:MouseEvent):void{
 
 		Tweener.addTween(anda_mc,{alpha:0, time:1, transition:"easeOutExpo", onComplete:VoltaAlpha});
 
 	}
 
 	private function VoltaAlpha():void{
 
 		Tweener.addTween(anda_mc,{alpha:1, time:1, transition:"easeOutExpo"})
 
 	}
 
// funcao de delay
 
 	private function Delay(e:MouseEvent):void{
 
 		Tweener.addTween(anda_mc,{alpha:0, delay:1, time:1, transition:"easeOutExpo", onComplete:VoltaDelay});
 
 	}
 
 	private function VoltaDelay():void{
 
 		Tweener.addTween(anda_mc,{alpha:1, time:1, transition:"easeOutExpo"})
 
 	}
 
// funcao de bezier
 
 	private function Bezier(e:MouseEvent):void{
 
 		Tweener.addTween(anda_mc,
 
 						 {x:stage.stageWidth/2, y:stage.stageHeight/2, time:3, transition:"linear", onComplete:VoltaBezier,
 
 						 _bezier:[{x:stage.stageWidth,      y:stage.stageHeight/2},
 
 							     {x:stage.stageWidth/2,   y:0},
 
 							     {x:0,                            y:stage.stageHeight/2},
 
 							     {x:stage.stageWidth/2,   y:stage.stageHeight},
 
 							     {x:stage.stageWidth,      y:stage.stageHeight/2}]});
 
 	}
 
private function VoltaBezier():void{
 
 		Tweener.addTween(anda_mc,{x:stage.stageWidth/2, y:stage.stageHeight/2, time:1, transition:"easeOutExpo"})
 
 	}
 
}
 
}

Pronto, nossa classe está pronta e nosso filme também… agora teste para ver o resultado! Abaixo eu estou dispondo o aplicativo funcionando.

TOP