Carga de imágenes y SWF en AS3 con Loader

Carga de imágenes y SWF en AS3 con Loader

Etiquetas: Loader URLRequest contentLoaderInfo addEventListener load

El código de este ejemplo sirve para cargar una imagen (jpg, gif o png) o swf controlando el proceso de carga. Para cargar otro tipo de archivos (por ejemplo XML o texto), hay que utilizar URLLoader.

  1. //Importo las clases necesarias
  2. import flash.display.Loader;
  3. import flash.display.Sprite;
  4. import flash.events.*;
  5. import flash.net.URLRequest;
  6.  
  7. //Asigno la url que se va a cargar
  8. var url:String = "foto.jpeg";
  9.  
  10. //Carga la imagen
  11. function CargarFoto() {
  12. 	//Creo el objeto cargador
  13. 	var loader:Loader = new Loader();
  14. 	//Le añado los listeners
  15. 	ponerListeners(loader.contentLoaderInfo);
  16. 	//Creo el objeto que contendrá la petición
  17. 	var peticion:URLRequest = new URLRequest(url);
  18. 	//Cargo la petición
  19. 	loader.load(peticion);
  20. }
  21.  
  22. //Añade los listeners al cargador
  23. function ponerListeners(dispatcher:IEventDispatcher):void {
  24. 	dispatcher.addEventListener(Event.COMPLETE, completeHandler);
  25. 	dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
  26. 	dispatcher.addEventListener(Event.INIT, initHandler);
  27. 	dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
  28. 	dispatcher.addEventListener(Event.OPEN, openHandler);
  29. 	dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
  30. }
  31.  
  32. //Funcion que se ejecuta cuando termina la descarga. 
  33. function completeHandler(event:Event):void {
  34. 	trace("completeHandler: " + event);
  35. 	addChild(event.target.content);
  36. }
  37.  
  38. //Se ejecuta al recibir un código de estado HTTP
  39. function httpStatusHandler(event:HTTPStatusEvent):void {
  40. 	trace("httpStatusHandler: " + event);
  41. }
  42.  
  43. //Se distribuye cuando las propiedades del objeto cargado están disponibles
  44. //A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc)
  45. function initHandler(event:Event):void {
  46. 	trace("initHandler: " + event);
  47. }
  48.  
  49. //Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un 
  50. //archivo inexistente
  51. function ioErrorHandler(event:IOErrorEvent):void {
  52. 	trace("ioErrorHandler: " + event);
  53. }
  54.  
  55. //Se ejecuta cuando comienza la operación de carga
  56. function openHandler(event:Event):void {
  57. 	trace("openHandler: " + event);
  58. }
  59.  
  60. //Se ejecuta periodicamente mientras dura la carga
  61. function progressHandler(event:ProgressEvent):void {
  62. 	trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
  63. }
  64.  
  65. //Empezamos
  66. CargarFoto();

Descargar archivos

Comentarios
    • Autor
    • Eva
    Genial!! Soy una pobre infografa que de rebote acabó en web y no tengo ni idea de actionscript y menos de la versión 3.0. Este código me viene de perlas para una plantilla que estoy haciendo para cargar gráficos en la web, lo único que necesitaría es que cuando el swf que he cargado terminara de reproducirse pudiera ejecutarse una función que vuelva a un fotograma concreto de la linea de tiempo principal. Imagino que con todos los listeners que se han añadido al cargador, no será muy dificil detectar, cuándo ha terminado ¿verdad? mi problema es de base y encuentro dificilisimo escribir el código por mi misma ¿alguna ayuda por favor? Mil gracias
    • Autor
    • esedeerre

    Hola Eva, la función que se ejecuta cuando termina de cargarse la foto es:

    function completeHandler(event:Event):void {

    Es decir, puedes poner las instrucciones que quieras dentro de esa función, y cuando termine de cargarse la foto se ejecutarán.

    • Autor
    • macrowebdigital
    muy buen articulo esta bastante entendible y muy bien comentado gracias.
    • Autor
    • esedeerre

    Muchas gracias

    Acabo de hacer otro ejemplo "mas sencillo" para carga de imágenes. Si quieres echarle un vistazo, puedes verlo aqui:

    http://www.esedeerre.com/ejemplo/9/135/actionscript-30-ejemplo-basico-para-cargar-imagenes

    • Autor
    • Mike Morales
    excelente post solo tengo una duda como le hago para decirle que la imagen a cargar va dentro de un MC que esta dentro de otro?? quiero saber si seria asi Mc_uno.Mc_dos.addChild(event.target.content); gracias por tu post!
    • Autor
    • esedeerre

    Hola Mike.

    Si, sería asi.

    • Autor
    • carlos
    Muchas gracias por estos ejemplos y tomarte la molestia de ponerlo. Gracias
    • Autor
    • allison daiyana
    como puedo cargar varios swf que estan en un archivo xml dentro de un contenedor, la idea es que al crear un swf lo agregue al xml y se valla mostrando en el contenedor
    • Autor
    • andres abalos
    mientras cargo una opcion con loader y esta no termina de cargarse y pincho otra opcion, luego que termina de cargarse la anterior, me la carga en cualquier lado.. como puedo solucionarlo? gracias
    • Autor
    • selcunk
    hola, me da gusto haber encontrado esta web, mi problema es este, tengo dos swf unos en as3 i otro en as2, el ke esta en as2 tiene un boton ke manda al swf de as3 y as3 tiene su boton que regresa al que esta hecho en as2, el problema es ke cuando pasa de as3 al as2 no me respeta esta funcion: slate.onEnterFrame=function() { if(slate.hitTest(moko)){ _root.loadMovie("galeria/slate/slate.swf") delete this.onEnterFrame; } } para empezar, se puede hacer esto? tener as2 y as3 sin problemas en un proyecto ?
    • Autor
    • Pablo
    Tengo entendido que desde as3 se puede cargar swf en as2 pero viceversa no.
    • Autor
    • wil
    hola, 1ro q todo felicitaciones pr tu web, muy buenos aportes. mi duda seria cuando se tenga q cargar multiples archivos como p.e. 3imagenes , 2 swf, etc... como se haria esta parte? creo q se llama preloaders multiples. 1000 gracias de antemano si brindas este nuevo aporte.
    • Autor
    • mau
    Hola este tutorial es bueno!! Pero hice una variacion q me causas problemas. en vez de cargar un swf o un jpg, cargo un swf q en su interior tiene un componente de reproductor d video q carga un flv. cuando le doy click a un boton para q descargue.... removeChild(myVideo.swf); ... y cargue otra pelicula distinta, el audio del flv sigue sonando para lo anterior puedo usar SoundMixer.stopAll(); pero esto puede detenerme el sonido ambiente de mi aplicación o de algun reproductor de mp3 que use. Alguien sabe como contrarestar el sonido de ese flv sin usar SoundMixer.stopAll(); ?
    • Autor
    • Jonathan
    Wow!! esta genial el ejemplo! Oye, esedeerre, tengo una pequeña duda, es que tengo una archivo xml, modifique el codigo que pasaste arriba para que cargue las fotos que estan en el xml, lo que no se es cómo hacer para posicionar cada foto en un lugar distinto :S, una foto carga sobre la otra así que sólo se ve la última foto, intente hacerlo con loader.x = #; jaja pero no sirvio, te agradezco de antemano ^^ Hasta Luego!
    • Autor
    • red
    hola. tengo un problema al cargar el swf externo me manda un error, openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2] progressHandler: bytesLoaded=0 bytesTotal=24965 progressHandler: bytesLoaded=24965 bytesTotal=24965 initHandler: [Event type="init" bubbles=false cancelable=false eventPhase=2] httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0] completeHandler: [Event type="complete" bubbles=false cancelable=false eventPhase=2] Error #2044: ioError no controlado: text=Error #2032: Error de secuencia. URL: file:///C|/Users/NBP/Desktop/Precargas/quiz.xml at QuizApp() a que se debera si pudieran ayudarme se lo agradeceria mucho.....
    • Autor
    • diego vargas
    Hola gracias por el ejemplo me sirve mucho, pero tengo una pregunta. como hago para posicionar el loader?
    • Autor
    • hoover andres
    hola me funciono muy bien,,,, me abre el swf sin problemas pero tengo una pregunta............como hago que al acabar de cargar el swf no siga apareciendo en todos los demas fotogramas solo en el que lo cargo y ya. muchas gracias
    • Autor
    • fernando
    Hola asederre, tengo un sfw externo con una clase de documento que lleva un enterframe para realizar una animación, pero al cargar este swf en la película principal no me funciona. Cómo se soluciona esto. Gracias
    • Autor
    • Guillermo
    Hola, me funciona bien,pero el swf se muestra en la parte superior del escenario y en todos los fotogramas. Cómo podria establecer unas coordenadas para cambiar la situación del swf en el escenario y que se muestre solamente en el fotograma que le cargué. Gracias.
    • Autor
    • Josefina Venegas
    hola soy autodidacta y agradezco a la gente que aporta sus conocimientos para esta web, y aprovecho para ver si alguien puede apoyarme en decirme si es posible cargar un archivo swf donde tengo creado un mapa de google y quiero que se carge llamandolo desde un movie clip donde tengo varios componentes y un boton que al hacer clip lo cargue, ya hice todo el codigo y no me marca error, solo que no lo carga, no se si mi codigo no esta bien formado en fìn, a ver si me pueden hechar la mano. vale? gracias
    • Autor
    • Francisco
    Muchisimas gracias por toda tu ayuda con esta gran labor que realizas, en realidad todo tu material me ha servido mucho, y esta vez no ha sido la exepción, hé podido solucionar un problema que tenía hace bastante tiempo.. Muy buenos tutoriales, saludos desde Colombia
    • Autor
    • Max
    Hola, perdona pero soy un autentico novato, para vargar una swf,en action script 2 escribia así: target.loadMovie("widget_clima.swf"); stop(); y nunca llega a cargar porque esta eb as3. Como puedo hacer?. Muchas Gracias
    • Autor
    • JULIAN PATIÑO
    No entiendo por què todo ese codigo. La verdad yo carguè cinco imagenes que se rotan en un banner que hice en action script 2.0, con una sola linea de codigo que es esta: imagenes_mc.loadMovie("ima00" + (1+random(5)) + ".jpg"); La verdad no entiendo que hace todo ese codigo pero me interesa saber. A lo mejor yo estoy confundido. O fue que as3 volvio todo mas complejo. Se supone que la programacion dia a dia se vuelve mas simple. GRACIAS AMIGOS. La verdad no entiendo mucho.
    • Autor
    • jaime silva
    como este ejemplopero para cargar swf no foto y en un lugar del satage determinado, podrias ayudarme? como lo que se hacia en AS 2.0 con loadMoveNum o loadMovie y un mc vacio que lo ponias en el sitio que necesitares. Entiendo algo que se debe hacer con la nueva clase Sprite pero ni idea. Gracias por tu tiempo ESEDEERRE!
    • Autor
    • costa
    no entiendo, porque antes en as2 solo era: loadMovie("aqui la peli.swf",1); , y ahora todo este codigo que no termino por entender...
    • Autor
    • adolfo
    hola, 1 no se nada de AS2,AS3 ise un sitio web www.kukulcan.net el cual es un club para la personas que les justa jugar online de xbox por el momento, si ingresa mas jente que tengan otras consolas las incluire en el sitio bueno en la seccion de team ay una biografia de los miembros y en la cual tiene la imagen de su avatar pues qiero utilizar este AS3 para que la imagen se actualize //Importo las clases necesarias import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.net.URLRequest; //Asigno la url que se va a cargar var url:String ="avatar-body.png"; //Carga la imagen function CargarFoto() { //Creo el objeto cargador var loader:Loader = new Loader(); //Le añado los listeners ponerListeners(loader.contentLoaderInfo); //Creo el objeto que contendrá la petición var movieclip:URLRequest = new URLRequest("http://avatar.xboxlive.com:80/avatar/gamertag/avatar-body.png"); //Cargo la petición loader.load(movieclip); } //Añade los listeners al cargador function ponerListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(Event.INIT, initHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); } //Funcion que se ejecuta cuando termina la descarga. function completeHandler(event:Event):void { trace("completeHandler: " + event); addChild(event.target.content); } //Se ejecuta al recibir un código de estado HTTP function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } //Se distribuye cuando las propiedades del objeto cargado están disponibles //A partir de su distribucion podriamos modificar el objeto (ancho, escala, etc) function initHandler(event:Event):void { trace("initHandler: " + event); } //Se ejecuta cuando hay un error de entrada/salida, por ejemplo, al intentar cargar un //archivo inexistente function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } //Se ejecuta cuando comienza la operación de carga function openHandler(event:Event):void { trace("openHandler: " + event); } //Se ejecuta periodicamente mientras dura la carga function progressHandler(event:ProgressEvent):void { trace("progressHandler: bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } //Empezamos CargarFoto(); pero al darle en flash probar pelicula mesale en la pestana de salida openHandler: [Event type="open" bubbles=false cancelable=false eventPhase=2] progressHandler: bytesLoaded=0 bytesTotal=26941 progressHandler: bytesLoaded=26941 bytesTotal=26941 initHandler: [Event type="init" bubbles=false cancelable=false eventPhase=2] httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=200 responseURL=null] completeHandler: [Event type="complete" bubbles=false cancelable=false eventPhase=2] y cuando exporto la pelicula y la quiero probar no me muestra la imagen todo esto que megustaria inplementar en mi sitio espara que personas cuando entren aver la seccion del team vean la bio grafia de los integrantes, este sitio http://profile.mygamercard.net proporciona un codigo generado por silverlight el cual megustari poner en mi sitio, tengo muchas ideas lo mola es que 1 no tengo el conosimiento 2 no tengo el dinero para pagarle a la personas que saven hacer esto al guien podrai ayudarme porfavor
    • Autor
    • Ernesto
    Hola, estoy haciendo un proyecto de un juego en flash con as3.0, mi problema es que mi juego se compone de 3 partes: El .swf principal que jala a todos los archivos,( el .swf de la intro, el .swf de las instrucciones, y por ultimo el (.swf del juego que a su ves funciona con un (.as, )), no tengo problemas hasta el de las instrucciones, pero cuando abro el juego no lo muestra, y aparece un error en la ventana de salida. TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo. at Juego() Error #2044: IOErrorEvent no controlado: text=Error #2032: Error de secuencia. at Juego(). mi pregunta es, se puede agregar un swf dentro de otro, si el primero funciona con un .as?? Gracias por la ayuda
    • Autor
    • Gisela
    Buenisima aportación .. Graxxx
    • Autor
    • jose
    estoy trabajando con flashdevelop y estoy usando as3. tengo problema para reproducir un archivo externo swf.(anim.swf - es tiene una animacion hecha con as3) detallo mi problema. 1. descargo el archivo anim.swf mediante un objeto Loader 2. al terminar la descarga, guardo el objeto Loader en un objeto contenedor(MovieClip). 3. reproducir la animacion. mi problema esta en los puntos 2 y 3. objMovieClip.addChild(objLoader); objMovieClip.play(); no se si he asignado bien el dato para el MovieClip, el caso es que no me muestra nada, ademas que pasado un tiempo las variables se limpian y vuelve a ejecutarse el codigo desde el inicio, como si recien ubiese iniciado la aplicacion. cualquier ayuda es bienvenida.
    • Autor
    • María
    Hola, tengo un problema ... ¿como podría hacer que la imágen se cargase en una posición x,y determinada!? no doy con la tecla! y ya estoy embotada, ayuda por favor! :-(
Dejar un comentario
Tu nombre (obligatorio):

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

Web:

Comentario: