Clase Imagen - ActionScript3 | Phoxer.com
Clase Imagen - ActionScript3
17/01/2009

El Flex tiene la facilidad de tener componentes ya programados y así ahorrarnos un montón de tiempo a la hora de programar. Como es el caso del componente Image.
El componente Image para Flex lo que hace es darnos la posibilidad de cargar una imagen muy fácil en el área de trabajo.

Pero y flash??
Para eso programe una clase que cumple con la misma función que la clase Image.

Veamos cómo funciona:

import phoxer.Images.Imagen;
 
var img:Imagen = new Imagen("http://www.phoxer.com/images/phoxer.jpg",onImageProgress,onImageLoaded);
addChild(img)
 
function onImageLoaded(bm:Bitmap,ld:Loader):void{
	//bm: es el objeto Bitmap de la imagen cargada.
	//ld: es el objeto Loader que cargo la imagen.
}
 
function onImageProgress(num:int):void{
	//num: es el numero 0 al 100 del progreso de la carga
}

La ventaja que tenemos con esto es que nos olvidamos de generar un Loader por cada imagen que queremos incluir en nuestros proyectos.
De esta manera incluir imágenes es mucho mas fácil y rápido.

Aca esta mi clase Imagen:

/**
by .:[PHOXER]:.
http://www.phoxer.com
v 1.5;
*/
package phoxer.Images{
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.IEventDispatcher;
	import flash.events.ProgressEvent;
	import flash.net.URLRequest;
	public class Imagen extends Sprite{
		public var loader:Loader;
		public var id:String;
		private var fileurl:URLRequest;
		private var backProgress:Function=null;
		private var backComplete:Function=null;
 
		public function Imagen(url:String,prg:Function=null,cmp:Function=null){
			super();
			fileurl = new URLRequest(url);
			loader = new Loader();
			loader.name="loader";
			loader.load(fileurl);
			backProgress=prg;
			backComplete=cmp;
			listeners(loader.contentLoaderInfo);
			this.addChild(loader);
		}
		public function getWidth():Number{
			return loader.width;
		}
		public function getHeight():Number{
			return loader.height;
		}
		private function listeners(e:IEventDispatcher):void {
			if (backProgress!=null) {
				e.addEventListener(ProgressEvent.PROGRESS, onProgress,false,0,true);
			}
			if(backComplete!=null){
				e.addEventListener(Event.COMPLETE, onComplete,false,0,true);
			}
		}
		private function onProgress(e:ProgressEvent):void {
			var total:Number = Math.round((e.bytesLoaded*100)/e.bytesTotal);
			backProgress(total);
		}
		private function onComplete(e:Event):void {
			backComplete(loader.getChildAt(0),loader);
		}
	}
}