package com.display { import com.abstract.IDisposable; import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLRequest; /* MM MM EEEEEEE DDDDDD IIIIII AAA IIIIII MM MM AAA GGGGG EEEEEEE MMM MMM EE DD DD II AAAAA II MMM MMM AAAAA GG EE MMMMMMM EEEE DD DD II AA AA II MMMMMMM AA AA GG GGG EEEE MM M MM EE DD DD II AAAAAAA II MM M MM AAAAAAA GG GG EE MM MM EEEEEEE DDDDDD IIIIII AA AA IIIIII MM MM AA AA GGGGG EEEEEEE */ public final class MediaImage extends Sprite implements IDisposable { private var _loader:Loader; private var _bitmap:Bitmap; private var _url:String; private var _width:int; private var _height:int; public const ERROR:String = "Error"; public function MediaImage(url:String, width:int = 0, height:int = 0) { // We might need this... _url = url; _width = width; _height = height; _loader = new Loader(); _loader.load(new URLRequest(url)); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded,false, 0, true); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onMediaError, false, 0, true); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.DISK_ERROR, onMediaError, false, 0, true); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onMediaError, false, 0, true); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onMediaError, false, 0, true); } public function dispose():void { while (this.numChildren > 0){ removeChildAt(0); } _loader.removeEventListener(Event.COMPLETE, onImageLoaded); _loader.removeEventListener(IOErrorEvent.IO_ERROR, onMediaError); _loader.removeEventListener(IOErrorEvent.DISK_ERROR, onMediaError); _loader.removeEventListener(IOErrorEvent.NETWORK_ERROR, onMediaError); _loader.removeEventListener(IOErrorEvent.VERIFY_ERROR, onMediaError); _loader = null; _bitmap.bitmapData.dispose(); _bitmap = null; } public function get url():String { return _url; } public function get bitmap():Bitmap { return _bitmap; } public function get loader():Loader { return _loader; } /* PPPPPP RRRRR IIIIII V V AAA TTTTTT EEEEEEE PP PP RR RR II V V AAAAA TT EE PPPPPP RRRRR II V V AA AA TT EEEE PP RR RR II V V AAAAAAA TT EE PP RR RR IIIIII V AA AA TT EEEEEEE */ private function onImageLoaded(e:Event):void { // Get Bitmap var _bitmap:Bitmap = Bitmap(e.target.loader.content); // Scale bitmap // TODO addChild(_bitmap); // Send event up dispatchEvent(e); } private function onMediaError(e:IOErrorEvent):void { dispatchEvent(new Event(ERROR)); } } }