Flash: Imágenes rotativas en AS3

Flash: Imágenes rotativas en AS3

Etiquetas: setTimeout removeChild addEventListener URLRequest Loader

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

Descargar archivos

Comentarios
    • Autor
    • sergio
    Hola ,muy buena la clase pero tengo una duda,al ser importada va perfecto pero una vez cargo otro contenido me da error porque no elimina la referencia a la funcion imagen cargada.como puedo hacer
    • Autor
    • Oscar
    buenos dias q tal?? tengo una pregunta, por q el programa funciona ejecutando el archivo con extension swf y cuando lo cargo a una pagina no funciona?? solo me dice q necesita una version mas actual del reproductor de flash?? y tengo la version 10. cual es el problema???
    • Autor
    • Oscar
    buenos dias q tal?? tengo una pregunta, por q el programa funciona ejecutando el archivo con extension swf y cuando lo cargo a una pagina no funciona?? solo me dice q necesita una version mas actual del reproductor de flash?? y tengo la version 10. cual es el problema???
    • Autor
    • Chabat
    Muy buen tuto! Para Oscar: Tu problema radica en que el reproductor de flash de tu máquina es el 10, pero el plugin que tiene instalado tu navegador (explorer, firefox o chrome) está desactualizado. Tienes que actualizarlo a parte desde tu navegador. Saludos! Chabat Portfolio: http://blog.chabat.com.ar Cosas: http://elpezojo.blogspot.com
    • Autor
    • Leninia
    mil gracias por el aporte, llevo tiempo haciendo las cabeceras por frames y voy a probarlas así a ver como van! un saludo
    • Autor
    • Felipe
    como se puede programar este script para que se vea como fondo de la animacion (en caso de una web)
    • Autor
    • JackDam
    Hola, muchas gracias por el aporte, haber que tal me va ya que apenas me estoy induciendo en el ámbito de la programación AS2 y 3.
    • Autor
    • alberto
    Hola muy bueno el ejemplo, pero quisiera me dijeras ¿donde, y como se puede hacer para hacer transiciones entre las imagenes?, para que no sea tan violento el cambio entre una y otra?,se agradecería que alguien lo explicara, gracias
    • Autor
    • victor antonio galan martel
    ola ke tal muy buen post estoy ke uso la programacion ke colgaste estoy ke uso imagenes de mi pc pero al momento de colocar y hacer lso cambios respectivos me sale ke package es un error de sintaxis y noc la verdad ke es eso ke signifca package me puedes aydaur gracias
    • Autor
    • Pau Company
    Muy buen, aporte, como cai todos los que haces. Pau Company
    • Autor
    • giovani luis
    como puedo hacer que funcione con links personalizados por ejemplo cuando pase una imagen que tenga un link www.google.com el otro cuando este pasando tenga otro link al presionarlo entre a www.yahoo.com .... y asi susesivamente ayudenme por favor Gracias por adelantado
Dejar un comentario
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web:

Comentario: