package haxework.net; import flash.events.ProgressEvent; import haxework.net.ILoader.Method; import flash.net.URLLoaderDataFormat; import flash.events.SecurityErrorEvent; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.events.Event; import flash.net.URLLoader; class BaseURLLoader extends BaseLoader { private var dataFormat:URLLoaderDataFormat; private var loader:URLLoader; public function new(dateFormat:URLLoaderDataFormat = null) { super(); this.dataFormat = (dateFormat == null ? URLLoaderDataFormat.TEXT : dateFormat); } override private function internalRequest(url:String):Void { loader = buildLoader(); var request:URLRequest = new URLRequest(url); loader.load(request); } private function buildLoader():URLLoader { var loader:URLLoader = new URLLoader(); loader.dataFormat = dataFormat; loader.addEventListener(Event.COMPLETE, onComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, onError); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); loader.addEventListener(ProgressEvent.PROGRESS, onProgress); return loader; } override private function dispose():Void { super.dispose(); if (loader != null) { loader.removeEventListener(Event.COMPLETE, onComplete); loader.removeEventListener(IOErrorEvent.IO_ERROR, onError); loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onError); loader.removeEventListener(ProgressEvent.PROGRESS, onProgress); loader = null; } } override public function cancel():Void { if (loader != null) { try {loader.close();} catch (error:Dynamic) {} } super.cancel(); } }