Ecualizador 3D (AS 3.0 + Papervision 2.0)

July 4th, 2008

ecualizador

Hola de nuevo,

aquí os dejo otro ejercicio en AS3 y Papervision, esta vez jugando con el sonido, unos cubos que interactuan segun la clase SoundMixer.computeSpectrum.
He creado un deslizador para que podáis rotarlo. Las clases estan en la carpeta com.kaax.clases.* , una es la clase Ecualizador, con
todo lo que necesitáis para el 3D, el drag del deslizador, y el movimiento por sonido. Y luego, la clase MiStage, que es tan solo para
reposicionar.

Este seria la clase Ecualizador


 /*

	 * ECUALIZADOR 3D
	 *
	 * @author		Isaac León (KAAX)
	 * @version		1.0.0
	 * @code		AS 3.0
	 * @email		hola@isaacleon.com
	 * @url		    www.isaacleon.com
	 * @blog	    www.isaacleon.com/blog

	*/

 package com.kaax.clases {

	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;

	import flash.display.*;
	import flash.events.*;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.media.*;
    import flash.display.Stage;
	import flash.utils.*;

	import caurina.transitions.*;

			public class Ecualizador{

			        private var cancion:String;
					private var _background:MovieClip;
					private var _mc:Sprite;
					private var logo:MovieClip;
					private var cubo:MovieClip;
					private var cubo2:MovieClip;
					private var request:URLRequest;
					private var sonido:Sound;
					private var chan:SoundChannel;
                    private var mcStage:Stage;
					private var bt_desliza:MovieClip;
					private var duracion:MovieClip;
					private var carril:MovieClip;
					private var viewport:Viewport3D;
					private var render:BasicRenderEngine;
					private var scene:Scene3D;
					private var camera:Camera3D;
					private var miMaterial1:MovieMaterial;
					private var miMaterial2:MovieMaterial;
					private var currentTime:Number;
					private var arrayCubos:Array;
					private var bits:ByteArray;
					private var totalSpacio:int;
					private var anchura:Number;
					private var arrayClips:Array;
					private var cuantosCubosSpectrum:Number;
					private var tiempo:Timer;
					private var xDist:int;
					private var yDist:int;
					private var deslizando:Boolean;
					private var xFinal:int;
					private var yFinal:int;
					private var mX:int;
					private var soundMixer:SoundMixer;

                    public function Ecualizador(_mc:Sprite,_background:MovieClip,cancion:String,logo:MovieClip,cubo:MovieClip,cubo2:MovieClip,bt_desliza:MovieClip,duracion:MovieClip,carril:MovieClip):void{

							this._mc = _mc;
							this.mcStage = _mc.stage;
							this._background = _background;
							this.logo = logo;
							this.cubo = cubo;
							this.cubo2 = cubo2;
							this.cubo = cubo;
							this.bt_desliza = bt_desliza;
							this.duracion = duracion;
							this.carril = carril;
							this.cancion=cancion;

							initStage();
							initVariables();
							construye2carasCubo();
							construyeSpectrum();
					}

					public function initStage():void {

							 var miStage:com.kaax.clases.MiStage=new com.kaax.clases.MiStage(this._mc,_background,bt_desliza,logo,duracion,carril);
					}
					private function initVariables():void {

							 this.viewport= new Viewport3D(0, 0, true, true);
							 this._mc.addChild(viewport);
							 this.render= new BasicRenderEngine();
							 this.scene= new Scene3D();
							 this.camera= new Camera3D();
							 this.camera.zoom = 4;
							 this.camera.focus = 100;
							 this.camera.y = 500;
							 this.camera.x = -2000;
							 this.currentTime=0;
						         this.arrayCubos=new Array();
					                 this.bits= new ByteArray();
					                 this.totalSpacio=1760;
					                 this.arrayClips=new Array();
							 this.request= new URLRequest(this.cancion);
                                                         this.sonido= new Sound();
                                                         this.sonido.load(this.request);
							 this.chan= this.sonido.play();
							 this.cuantosCubosSpectrum=6;
							 this.deslizando=false;
							 //this.soundMixer=new SoundMixer();
							 this.tiempo=new Timer(100);
					}

					private function rango(numeroMin:Number, numeroMax:Number):Number {

							return Math.floor(Math.random() * numeroMax - numeroMin + 1) + numeroMin;
					}

					private function construye2carasCubo():void{

						   miMaterial1= new MovieMaterial(this.cubo);
						   miMaterial1.interactive = false;
						   miMaterial1.smooth = false;
						   miMaterial1.animated = false;

						   miMaterial2= new MovieMaterial(this.cubo2);
						   miMaterial2.interactive = false;
						   miMaterial2.smooth = false;
						   miMaterial2.animated = false;

					}

					private function construyeSpectrum():void{

							for (i:int=0; i < cuantoscubosspectrum ;  i+=1) {

							    var miCubo:Cube = new Cube(new MaterialsList({front:miMaterial1, back:miMaterial1, all:miMaterial2}),  1420, 1450,  1450, 6,6,6);
								scene.addChild(miCubo);

								var miX=i*100;
								miCubo.scaleX=cubo.scaleY=0.1;
								Tweener.addTween(miCubo, {x:miX,scaleX:1,scaleY:1, z:2900, delay:i*0.2, time: 1.2, transition:"easeinoutquint"});
								render.renderScene(scene, camera, viewport);
							        arrayCubos[i]=miCubo;

							}
							iniciaTemporizadorSpectrum();
							iniciaDrag();
					}

					private function iniciaTemporizadorSpectrum():void{

							this.tiempo.addEventListener(TimerEvent.TIMER, refrescarSpectrum);
							this.tiempo.start();

					}

					private function refrescarSpectrum(event:TimerEvent):void{

							SoundMixer.computeSpectrum(bits, true);
							currentTime = chan.position;
							duracion.scaleX=currentTime/sonido.length;
							var j:int;
							var anchura:uint = 1;

						        for (j=0;  j < cuantosCubosSpectrum;  j+=1) {

								        var conversion_:Number = bits.readFloat();
									var desplazamiento:Number = (conversion_ * 5);
									var cubo:Cube=arrayCubos[j];
							                cubo.x=3400+j*1760;
							                Tweener.addTween(cubo, {scaleY:desplazamiento, time: 0.3, transition:"easeinoutquint"});
								        render.renderScene(scene, camera, viewport);

							}

					}

					private function desliza(deslizador:Sprite):void{

							if (deslizando){

								deslizador.x = this._mc.mouseX;
								camera.zoom=+this._mc.mouseX/300+5;

								for(var i:Number=0 ; i < cuantosCubosSpectrum ;  i++){

										var cubo=arrayCubos[i];
										cubo.rotationX = -this._mc.mouseY/4;
										cubo.rotationY = -this._mc.mouseX/4;

									}
							}

					}

					private function iniciaDrag():void{

							this.mcStage.addEventListener(Event.ENTER_FRAME, dragEnterFrame)
							this.mcStage.addEventListener(MouseEvent.MOUSE_DOWN, dragMouseDown)
							this.mcStage.addEventListener(MouseEvent.MOUSE_UP, dragMouseUp)
							bt_desliza.buttonMode=true;

					}

					private function dragEnterFrame(event:Event)    { 

					       desliza(this.bt_desliza) 

					}  

					private function dragMouseDown(event:MouseEvent):void { 

						deslizando = true;

					}
					private function dragMouseUp(event:MouseEvent)    { 

						deslizando = false;

					} 

		}
	}

Y nada, espero que os guste.

Aquí os dejo los enlaces.

Un saludo!

Ver Ecualizador3D
Descargar Ecualizador3D

TypeConverter 3D (AS 3.0 + Papervision 2.0)

June 28th, 2008

efecto tv

Hola a todos!

Espero que estéis todos bien! ya tenía ganas de volver por aquí :p
La verdad es que debido al aumento de trabajo y a cambios importantes en mi vida, mi frecuencia por aquí fue reduciéndose a cenizas…y después de tantos meses sin postear nada, ahora que tenia un poco de tiempo, he realizado un mini ejercicio con AS3 y papervision que me gustaria compartir con vosotros para que os lo podáis descargar para testear, estudiarlo o lo que queráis. Se llama TypeConverter 3D, y es un motor para escribir letras pixel en 3D, puedes borrarlas, ampliarlas con el zoom, activar la cámara para que se mueva respecto al ratón, crear una esfera, etc…

El motor está programado con AS3 y la versión 2.0 de Papervision. El zip consta de un archivo fla, las clases de caurina para las transiciones, el paquete de papervision,
y dentro de la carpeta com, hay una carpeta kaax que es donde encontraréis las 3 clases que he desarrollado para esta mini experiencia.

Esto es un ejemplo de lo que podéis hacer:

converterType3D.jpg

Si queréis retocar la tipografia, tenéis que abrir el archivo Abecedario.as y en los arrays correspondientes de cada letra, podéis cambiar el 1 por 0 y viceversa.
Incluso puede que os salgan abecedarios para marcianos :)

Le tecla “DEL” borra las letras que hayas escrito pixel3D por pixel3D.

Aquí os dejo parte de la clase Abecedario.

/*

	 * TYPECONVERTER 3D
	 *
	 * @author		Isaac León (KAAX)
	 * @version		1.0.0
	 * @code		AS 3.0
	 * @email		hola@isaacleon.com
	 * @url		    www.isaacleon.com
	 * @blog	    www.isaacleon.com/blog

	*/ 

 package com.kaax.clases {

    public class Abecedario
	{

        private var a_,b_,c_,d_,e_,f_,g_,h_,i_,j_,k_,l_,m_,n_,o_,p_,q_,r_,s_,t_,y_,v_,u_,w_,x_,y__,z_,arrays:Array;

        public function Abecedario()
		{
			init();
		}
		private function init():void{

				a_=new Array(1,1,1,1,1,
							 1,0,0,0,1,
							 1,0,0,0,1,
							 1,1,1,1,1,
							 1,0,0,0,1);

				 a_.name = "a";                    

				b_=new Array(1,1,1,1,0,
							 1,0,0,0,1,
							 1,1,1,1,0,
							 1,0,0,0,1,
							 1,1,1,1,0);

				b_.name = "b";  

				c_=new Array(1,1,1,1,1,
							 1,0,0,0,0,
							 1,0,0,0,0,
						     1,0,0,0,0,
							 1,1,1,1,1);
				 c_.name = "c"; 

				 d_=new Array(1,1,1,1,0,
							  1,0,0,0,1,
							  1,0,0,0,1,
							  1,0,0,0,1,
							  1,1,1,1,0);
				 d_.name = "d";      

				e_=new Array(1,1,1,1,1,
							 1,0,0,0,0,
							 1,1,1,1,0,
							 1,0,0,0,0,
							 1,1,1,1,1);

				 e_.name = "e";     

				f_=new Array(1,1,1,1,1,
							 1,0,0,0,0,
							 1,1,1,1,0,
							 1,0,0,0,0,
							 1,0,0,0,0);
				f_.name = "f";  

				g_=new Array(1,1,1,1,1,
						     1,0,0,0,0,
							 1,0,1,1,1,
							 1,0,0,0,1,
							 1,1,1,1,1); 

				 g_.name = "g";
				h_=new Array(1,0,0,0,1,
							 1,0,0,0,1,
							 1,0,0,0,1,
							 1,1,1,1,1,
							 1,0,0,0,1); 

				h_.name = "h";      

				i_=new Array(1,1,1,1,1,
							 0,0,1,0,0,
							 0,0,1,0,0,
							 0,0,1,0,0,
							 1,1,1,1,1); 

				i_.name = "i";
				j_=new Array(0,0,0,0,1,
							 0,0,0,0,1,
							 1,1,1,0,1,
							 0,1,0,0,1,
							 0,1,1,1,1); 

				 j_.name = "j"; 

				k_=new Array(1,0,0,0,1,
							 1,0,0,1,0,
							 1,1,1,0,0,
							 1,0,0,1,0,
							 1,0,0,0,1);

				k_.name = "k";   

				l_=new Array(1,0,0,0,0,
						     1,0,0,0,0,
							 1,0,0,0,0,
							 1,0,0,0,0,
						     1,1,1,1,1);
				l_.name = "l";                        

				m_=new Array(1,1,1,1,1,
							 1,0,1,0,1,
							 1,0,1,0,1,
						     1,0,0,0,1,
						     1,0,0,0,1); 

				 m_.name = "m";    

				n_=new Array(1,1,1,1,0,
							 1,0,0,0,1,
							 1,0,0,0,1,
							 1,0,0,0,1,
							 1,0,0,0,1); 

				 n_.name = "n";    

				o_=new Array(0,1,1,1,0,
							 1,0,0,0,1,
							 1,0,0,0,1,
						     1,0,0,0,1,
							 0,1,1,1,0);
				 o_.name = "o";                       

				p_=new Array(1,1,1,1,0,
						     1,0,0,0,1,
							 1,0,0,0,1,
							 1,1,1,1,0,
							 1,0,0,0,0);
				p_.name = "p";                        

				q_=new Array(0,1,1,1,0,
						     1,0,0,0,1,
							 1,0,0,0,1,
							 1,0,1,0,1,
							 0,1,1,1,0);
				q_.name = "q";      

				r_=new Array(1,1,1,1,0,
							 1,0,0,0,1,
						     1,0,0,0,1,
						     1,1,1,1,0,
							 1,0,0,0,1);
				 r_.name = "r";                       

				s_=new Array(0,1,1,1,1,
							 1,0,0,0,0,
						     0,1,1,1,0,
							 0,0,0,0,1,
						     1,1,1,1,0);
				s_.name = "s";                        

				t_=new Array(1,1,1,1,1,
						     0,0,1,0,0,
						     0,0,1,0,0,
							 0,0,1,0,0,
							 0,0,1,0,0);
				 t_.name = "t";                       

				u_=new Array(1,0,0,0,1,
							 1,0,0,0,1,
							 1,0,0,0,1,
						     1,0,0,0,1,
						     0,1,1,1,0);
				 u_.name = "u";                       

				v_=new Array(1,0,0,0,1,
							 1,0,0,0,1,
						     1,0,0,0,1,
						     0,1,0,1,0,
						     0,0,1,0,0);
				v_.name = "v";                        

				w_=new Array(1,0,0,0,1,
							 1,0,0,0,1,
						     1,0,1,0,1,
						     1,0,1,0,1,
							 0,1,0,1,0);

				w_.name = "w";  

				x_=new Array(1,0,0,0,1,
							 0,1,0,1,0,
							 0,0,1,0,0,
							 0,1,0,1,0,
						     1,0,0,0,1); 

				x_.name = "x";
				y__=new Array(1,0,0,0,1,
							  0,1,0,1,0,
							  0,0,1,0,0,
							  0,0,1,0,0,
							  0,0,1,0,0);

				y__.name = "y";
				z_=new Array(1,1,1,1,0,
							 0,0,0,0,1,
							 0,1,1,1,0,
							 1,0,0,0,0,
							 0,1,1,1,1);
				z_.name = "z";
			        arrays=new Array(a_,b_,c_,d_,e_,f_,g_,h_,i_,j_,k_,l_,m_,n_,o_,p_,q_,r_,s_,t_,u_,v_,x_,w_,y__,z_); 

		}

		// FUNCION QUE DEVUELVE EL ARRAY CORRESPONDIENTE DE COORDENADAS EN RELACION A LA TECLA PULSADA POR EL USUARIO
		public function returnArray(tecla:String):Array{
			var encontrado:Boolean=false;
			for(var i:uint=0;i

Soy consciente de que se podrian hacer mil cosas más para mejorarlo, pero tanto, tanto tiempo ya no tengo jejeje. Así que espero que lo disfrutéis y si os ayuda en algo, mejor que mejor.

Aquí os dejo los enlaces.

Un saludo a todos!

Ver TypeConverter3D
Descargar TypeConverter3D

The Doll

November 1st, 2007

The Doll

The Doll es un cortometraje que trata sobre la muerte, el deseo y los robots, inspirado en el famoso Real Doll “juguetes sexuales” para el sello de lencería Lascivious y que está producido por Wyld Stallyons. La verdad es que su puesta en escena no te deja indiferente, es bastante diferente al resto de campañas de lenceria femenina. Así que aquí os dejo el enlace para compartirlo.

The doll.

Consejos tipográficos (Galería)

October 21st, 2007

Consejos tipográficos

Consejos tipográficos es mi primera galería, entre comillas, de arte. Nace como una prueba de experimentación. Últimamente siento una necesidad abismal por plasmar lo que sea, y estos cuadros que veréis a continuación es fruto de un sábado inundado de inspiración. Salieron uno tras otro, sin poder parar y viendo el resultado tenía curiosidad por saber que más vendría. En los cuadros utilizo la tipografía como medio de expresión para realzar emociones, consejos a quiénes fueron dedicados. Las medidas son de 150 cm x 80 cm. Espero que os guste.

Consejos tipográficos.

The Secret

October 19th, 2007

El secreto
“La imaginación lo es todo, es la vista previa de lo que la vida va a atraer” (Albert Einstein)
“Todo lo que somos es resultado de lo que pensamos”(Buda).
“Visión sin acción, es solamente un sueño. Acción sin visión, es pasar el tiempo. La visión con acción, cambiará el mundo.”

Platón, Newton, Beethoven, Shakespeare, Einstein… todos ellos tenían algo en común, desprendian una brutal seguridad en sí mismos a la hora de creer en sus posibilidades. Conocían el secreto porque al final, te conviertes en lo que piensas.

Os paso un documental separado por partes, 90 minutos de duración, que vale la pena ver y analizar. A los pocos minutos de verlo sentí identificadas muchas de las cosas que explican durante el documental, hay gente que me dice que soy muy afortunado, que tengo mucha suerte porque estoy consiguiendo realizar muchos sueños, pero lo que no saben es que no se trata de suerte ni de casualidades, hay algo mucho más fuerte que se esconde en la sombra de lo que proyectamos que hace que la ley de la atracción funcione y todo cuanto deseemos termine por aparecer.

Aquí os paso esta pequeña reliquia que me enviaron desde el anonimato.

Que los disfrutéis.

The secret of life (part I).
The secret of life (part II).

Renovar o morir…

October 14th, 2007

People

Después de tanto tiempo ausente estoy empezando a renovarlo todo, me parezco a mi madre cuando le daba por hacer una limpieza a fondo!…
Por ahora solo he tenido tiempo a cambiar la imagen principal de mi dominio por ésta y a actualizarme de la forma más rápida mi portafolio. Espero algún día poder hacerme mi propio site en flash en condiciones, pero por ahora, aquí os dejo mis últimos trabajos actualizados en esta dirección.. Espero que os gusten.

PD: La foto que veréis al principio se hizo en el festival del Sol de Donosti de este año. Por orden de apariencia de izquierda a derecha: Víctor, Toni, Mikel, Alex, Mariela, Jaume, Adri, Dave, Quim, Vicente, Paola y un servidor.

I’m back.

October 11th, 2007

Por fin, después de cinco meses muy intensos, os escribo para informaros que he vuelto, y a todos aquellos que me habéis escrito
para saber de mi, agradeceros con total sinceridad vuestro interés. He estado ausente durante mucho tiempo porque mi vida se había
convertido en una montaña rusa emocional,con muchos vaivenes, una época
dónde he tenido que tomar muchísimas decisiones cruciales . Una de ellas suponía un cambio en mi estilo de vida actual en todos los aspectos, recibí varias ofertas de trabajo para ir a Los Ãngeles y NY, pero al final me di cuenta de que los sueños cambian, y que por ahora, mi sueño está en Barcelona.

Así que al final, después de estos últimos meses ante tal desbarajuste emocional por un sinfín de motivos, vuelvo retomando otra vez el control de todo aquello cuanto empecé.

Desde aquí deciros que me alegra volver para seguir compartiendo mis experiencias y aprendizajes con todos vosotros.

un abrazo

Isaac

Efecto TV (BitmapData.noise AS 3.0)

May 13th, 2007

efecto tv

Jugando un poco con la clase BitmapData con su método noise he logrado conseguir el efecto de una pantalla de televisor desconectado de la antena, para ello he utilizado un evento continuo que lo que hace es refrescar el ruido dándole posiciones aleatorias para dar el efecto deseado. Se pueden
realizar muchísimas versiones a partir de aquí como incluso uno que he conseguido sacar anteriormente que simulaba el suelo lleno de césped artificial. En fin, os dejo el código y los archivos para que podáis hacer pruebas.

import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Stage;
import flash.events.Event;
import flash.display.StageAlign;
import flash.display.StageScaleMode;

stage.align = StageAlign.LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var bmp:BitmapData = new BitmapData(500, 500,false, 0xff000000);
var tiempo:Timer = new Timer(50);
tiempo.addEventListener(TimerEvent.TIMER, refrescar);
tiempo.start();

function refrescar(event:TimerEvent):void {

	bmp.noise(Math.random()*500, 0, 255, 4,true);
	var imagen:Bitmap = new Bitmap(bmp);
	addChild(imagen);
}

Ver ejemplo
Descargar ejemplo

Everybody’s Free

May 13th, 2007

Inspiracion

Cierra los ojos, suspira y a continuación, imagínate por un momento a la edad de 80 años. Ya está todo hecho, todo cuanto pudiste decidir ya lo hiciste. Todo por cuanto pudiste hacer, se realizó. Ya nada puede volver a ti. Eres como viviste. Posees la mayoría de páginas del libro escritas, te quedan unas cuantas pero el verdadero peso de tu historia ya lo plasmaste. Ahora es cuando haciendo una mirada retrospetiva ves todos aquellos puntos de tu vida que fueron inflexivos, puedes reconocerlos, sentirlos. Ellos marcaron tu dirección. Pero en el fondo, sabes que se quedaron cosas pendientes, que por temores, inseguridades, vergüenza,… las dejastes escapar, y cuando eso sucede, ese momento desaparece para siempre. Ahora lo ves claro, puedes sentir que de volver atrás actuarias en consecuencia, escucharías más a tus impulsos, pensarías las cosas un poco menos… Ya nada puedes hacer.

Pero de repente, te das cuenta que justo en este momento, me estás leyendo desde tu pantalla del ordenador, estamos en el 2007 y tienes todo el tiempo del mundo para cambiarlo (bueno no todo, pero si el suficiente). Es ahora cuando debes hacer el ejercicio de avanzar en el tiempo para darte cuenta de lo que esperarias del presente. Es una gran noticia para ti, porque de ti dependerá que en el futuro sientas que viviste la vida con intensidad, y eso solo se consigue viviendo cada instante como si mañana ya no estuvieramos aquí. No temas a la muerte, ella puede ser tu gran aliada si quieres. Ella puede enseñarte con gran sabiduria a diferenciar las banalidades para apartarlas de ti. Vive tu vida tal y como la deseas. Aún estás a tiempo. Tienes aún mucho que escribir.

Everybody’s Free (To Wear Sunscreen) adaptación publicitaria basado en el video de Baz Luhrmann.

Ver video (15mb)
Si no ves el anterior link…

SoundMixer.computeSpectrum AS3.0

May 6th, 2007

SoundMixer.computeSpectrum

Después de tener un tiempo abandonado AS3.0 aquí os dejo un pequeño ejercicio para que podáis descargaros y reutilizar. Se trata de un ejemplo que sirve para cargar un mp3, en este caso es una canción de Pixies, y mediante el “nuevo AttachMovie” de Actionscript 3.0 recojo de la libreria referencias que me serviran para tratarlos según los datos que obtenga del método SoundMixer.computeSpectrum… Espero que os guste.

El archivo zip para descargar está sin el mp3, por lo cual deberéis cambiar en el fla el nombre/ruta del archivo mp3 en cuestión por uno vuestro.

import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

stage.align = StageAlign.LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
var cancion:String = "02 empty streets.mp3";
var request:URLRequest = new URLRequest(cancion);
var sonido:Sound = new Sound();
sonido.load(request);
sonido.play();

var bits:ByteArray = new ByteArray();
var movieClipClase:Class = getDefinitionByName("Brillo") as Class;
var totalSpacio:uint=182;
var anchura:uint = 2;
var arrayClips:Array=new Array();
var i:int;
for (i=10; i

Ver ejemplo
Descargar ejemplo

Ver ejemplo2 (Random)

Ver ejemplo3 (Random)