Flash: Imágenes rotativas en AS3
Esta clase, explica paso a paso como hacer en AS3 una carga de imágenes que van rotando cada cierto tiempo. Para ello se almacenan las urls en una matriz y se van cargando los archivos cada cierto tiempo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
package{ import flash.display.*; public class ImagenRotativa extends MovieClip{ import flash.events.Event; import flash.net.*; import flash.utils.*; //Esta es la matriz que contiene las urls de todas las fotos var fotos:Array = ["001.jpg","002.jpg","003.jpg","004.jpg"]; //En esta variable se almacena el valor del indice de la última URL cargada. El valor 0 //es el índice de "001.jpg", el 1 seria el de "002.jpg" y así sucesivamente. var actual:int = 0; //Aquí se almacena la última foto cargada var ultimaCargada; public function ImagenRotativa(){ //La función ImagenRotativa, que toma su nombre de la clase, se ejecuta al crearse el //objeto de la clase. Cuando se crea el objeto, le decimos que se ejecute cargarImagen por //primera vez. cargarImagen(); } private function cargarImagen():void{ /* Esta es la función que se encarga de cargar las imágenes. Lo primero es crear un objeto Loader para cargar en él las fotos. Una vez creado se le añade un Listener que nos permita saber cuando ha terminado de cargarse el archivo. Con esta linea: cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,imagenCargada); estamos diciendo que queremos que se ejecute la función imagenCargada, cuando se ejecute el evento complete de cargador. */ var cargador:Loader = new Loader(); cargador.contentLoaderInfo.addEventListener(Event.COMPLETE,imagenCargada); /* Creo la petición y le digo a cargador que la haga. Con esta instrucción: fotos[actual], le estoy diciendo que coja el elemento de la matriz fotos, cuyo índice es = a actual */ var peticion:URLRequest = new URLRequest(fotos[actual]); cargador.load(peticion); } private function imagenCargada(e:Event):void{ /* Esta es la función que se ejecuta cuando la imagen se ha cargado. Lo primero que veo es si ya se había cargado alguna foto: ultimaCargada != null y si es así, la elimino, para que las fotos no vayan apilándose en la escena. Después, guardo el contenido cargado en la variable ultimaCargada, y lo añado al escenario: ultimaCargada = e.target.content; addChild(ultimaCargada); Ahora hay que aumentar actual. Hay que tener en cuenta, que actual no puede ser mayor que la longitud de la matriz de fotos. Aquí, por ejemplo, si actual fuera 1000, cuando buscaramos en el índice 1000 de la matriz fotos, no encontrariamos ningún elemento. Es decir, hay que aumentar actual hasta que llegue al máximo, y entonces volver a empezar: (actual = 0).Eso es lo que hacemos con esta linea: actual = (actual==fotos.length-1)?0:actual+1; Por último, le decimos que cargue otra foto en dos segundos: setTimeout(cargarImagen,2000); donde 2000 es el tiempo en ms. */ if(ultimaCargada != null){ removeChild(ultimaCargada); } ultimaCargada = e.target.content; addChild(ultimaCargada); actual = (actual==fotos.length-1)?0:actual+1; setTimeout(cargarImagen,2000); } } } |