Clase para hacer precargas en Actionscript 3.0

Etiquetas: Loader MovieClip URLRequest

Esta es una clase que estoy utilizando bastante en mis últimos trabajos. Es bastante sencilla, pero se puede modificar fácilmente para añadir otros comportamientos. La clase tiene las siguientes function públicas:

-Función constructora: recibe como parámetro el clip que se va a mostrar durante la precarga. La clase está preparada para que este clip tenga un campo de texto llamado Texto_txt, que será donde se muestre el progreso de carga, y una animación de 100 fotogramas.

-Función cargar: recibe como parametro una url (String) y el clip donde vamos a cargar el contenido de la url (MovieClip).

package com.esedeerre{
	import flash.display.*;
	import flash.events.*;
	import flash.net.URLRequest;
	public class Cargador extends Sprite{
		var cargador:Loader
		var destino:MovieClip;
		var peticion:URLRequest;
		var loading:MovieClip;
		public function Cargador(clipLoad):void{
			loading=clipLoad;
			loading.visible = false;
		}
		public function cargar(url:String,donde:MovieClip):void{
			loading.visible = true;
			destino = donde;
			vaciarDestino();
			cargador = new Loader();
			ponerListeners(cargador.contentLoaderInfo);
			peticion = new URLRequest(url);
			cargador.load(peticion);
 
		}
		private function vaciarDestino():void{
			for (var i:uint=0; i < destino.numChildren; i++){
				var child = destino.getChildAt(i);
				destino.removeChild(child);
			}
		}
		private function ponerListeners(dispatcher:IEventDispatcher):void{
			dispatcher.addEventListener(Event.COMPLETE,cargaCompletada);
			dispatcher.addEventListener(ProgressEvent.PROGRESS, progresoCarga);
 
		}
		private function cargaCompletada(e:Event):void{
			loading.visible = false;;
			destino.addChild(e.target.content);
		}
		private function progresoCarga(e:ProgressEvent):void{
			loading.Texto_txt.text = e.bytesLoaded + " / " + e.bytesTotal;
			loading.gotoAndStop(Math.floor((e.bytesLoaded/e.bytesTotal)*100));
		}
	}
}

Comentarios:
Manolo dijo:
Estoy empezando con AS 3 y tus ejemplos me estan ayudando mucho, sobre todo con el tema de clases y demas. Estoy intentando usar tu Clase para hacer precargas y no me funciona, no entiendo muy bien que y donde debo tener en la pelicula .fla. ¿me podrias ayudar? ¿tienes un archivo .fla para ver el uso? Muchisimas gracias de antemano!
warmachine dijo:
que buen aporte parcero ultimamente me eh vuelto seguidor de tu pagina realmente tienes ejemplos utiles cualquier cosa te estare molestando con mis dudas suerte!
Paul dijo:
A mi tampoco me funciona. La página tiene muchas ayudas o tutoriales muy buenos.
esedeerre dijo:

Buenas, para comenzar con el tema de cargas os recomiendo este tutorial:

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

Paul dijo:
Ese funciona sin problema, y lo puedo utilizar. Este mejorado no me funciona, obviamente que es un error mío. Cargué una variable con la pelicula que quiero cargar. Al MovieClip con 100 fotogramas le deje loadin de nombre y tiene adentro un campo de texto con el nombre Texto_txt. No entiendo porque se declara el MovieClip destino. Si podés responder muchas gracias, sino gracias por este sitio que me viene desasnando mucho.
carlos dijo:
que tal oye hice un preloader de un tutoarial pero me sale este error me puedes decir como se corrige o por que sale?, muchas gracias. TypeError: Error #1010: A term is undefined and has no properties. at shiva_fla::MainTimeline/loaderF()
Marc dijo:
Yo cuando intento pasar mi clip a la clase me sale este error: Error #1034: Error de conversión forzada: no se puede convertir "carga.swf" en flash.display.MovieClip Podrías explicarme el por que..... gracias y saludos
esedeerre dijo:

@Marc

¿Que código estás poniendo exactamente?

emilio dijo:
buenas, amigo estoy de comienzo con esto de las clases, ya vi tus tutoriale de clases parte uno y parte 2, los entendi muy sencillos, pero estoy intentando con este y nada, esto es lo q estoy haciendo un archivo FLA llamado "index.fla" el cual tiene una clase primaria llamada "main" y dos movieclip uno llamado "clipLoad" y otro "carga_mc" ok en el main.as esta el siguiente codigo package { import flash.display.MovieClip; public class index extends MovieClip { import com.esedeerre.Cargador; public function index():void { cargar("foto.jpeg",segmento_mc); } } } me dice "1180: Call to a possibly undefined method cargar.
emilio dijo:
buenas, amigo estoy de comienzo con esto de las clases, ya vi tus tutoriale de clases parte uno y parte 2, los entendi muy sencillos, pero estoy intentando con este y nada, esto es lo q estoy haciendo un archivo FLA llamado "index.fla" el cual tiene una clase primaria llamada "main" y dos movieclip uno llamado "clipLoad" y otro "carga_mc" ok en el main.as esta el siguiente codigo package { import flash.display.MovieClip; public class index extends MovieClip { import com.esedeerre.Cargador; public function index():void { cargar("foto.jpeg",segmento_mc); } } } me dice "1180: Call to a possibly undefined method cargar.
emilio dijo:
buenas amigo ya funciona perfecto pero bueno te explico que es lo que quiero hacer tengo a index.fla su clase principal es main.as la cual posee el siguiente codigopackage { import flash.display.MovieClip; public class main extends MovieClip { import com.esedeerre.Cargador; import flash.events.*; public function main():void { var cargadore:Cargador=new Cargador(clipLoad); cargadore.cargar("swf/fondo.swf",segmento_mc); } } } ok cargo el swf fondo.swf en el movieclip segmento_mc, la pregunta es como hago para cargar otro swf desde el swf fondo.swf, el swf a cargar se llama menu.swf, intente colocar este codigo en el primer frame del swf fondo.swf, root.cargadore.cargar("swf/menu.swf",root.menu_mc) el movieclip menu_mc esta en la pelicula principal index.swf, que estoy haciendo mal? gracias.
Dejar un comentario:
Tu nombre (obligatorio):

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

Web: