UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

122 lines (106 loc) 3.89 kB
// Class: starling.assets.DataLoader var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function starling_utils_Execute() {return require("./../../starling/utils/Execute");} function openfl_net_URLRequest() {return $import(require("openfl/net/URLRequest"));} function openfl_net_URLLoader() {return $import(require("openfl/net/URLLoader"));} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function haxe_ds_ObjectMap() {return require("./../../haxe/ds/ObjectMap");} // Constructor var DataLoader = function() { this._urlLoaders = new (haxe_ds_ObjectMap().default)(); } // Meta DataLoader.__name__ = "starling.assets.DataLoader"; DataLoader.__isInterface__ = false; DataLoader.prototype = { load: function(url,onComplete,onError,onProgress) { var _gthis = this; var loader = null; var message; var mimeType = null; var httpStatus = 0; var request = null; var cleanup = null; var onHttpResponseStatus = null; var onLoadError = null; var onLoadProgress = null; var onLoadComplete = null; cleanup = function() { loader.removeEventListener("ioError",onLoadError); loader.removeEventListener("securityError",onLoadError); loader.removeEventListener(DataLoader.HTTP_RESPONSE_STATUS,onHttpResponseStatus); loader.removeEventListener("progress",onLoadProgress); loader.removeEventListener("complete",onLoadComplete); _gthis._urlLoaders.remove(loader); }; onHttpResponseStatus = function(event) { httpStatus = event.status; mimeType = DataLoader.getHttpHeader(event.responseHeaders,"Content-Type"); }; onLoadError = function(event1) { cleanup(); message = event1.type + " - " + event1.text; (starling_utils_Execute().default).execute(onError,[message]); }; onLoadProgress = function(event2) { if(onProgress != null && event2.bytesTotal > 0) { onProgress(event2.bytesLoaded / event2.bytesTotal); } }; onLoadComplete = function(event3) { cleanup(); if(httpStatus < 400) { (starling_utils_Execute().default).execute(onComplete,[loader.data,mimeType]); } else { (starling_utils_Execute().default).execute(onError,["Unexpected HTTP status '" + httpStatus + "'. URL: " + request.url]); } }; request = new (openfl_net_URLRequest().default)(url); loader = new (openfl_net_URLLoader().default)(); loader.dataFormat = "binary"; loader.addEventListener("ioError",onLoadError); loader.addEventListener("securityError",onLoadError); loader.addEventListener(DataLoader.HTTP_RESPONSE_STATUS,onHttpResponseStatus); loader.addEventListener("progress",onLoadProgress); loader.addEventListener("complete",onLoadComplete); loader.load(request); this._urlLoaders.set(loader,true); }, close: function() { var loader = this._urlLoaders.keys(); while(loader.hasNext()) { var loader1 = loader.next(); try { loader1.close(); } catch( e ) { var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; } } this._urlLoaders = new (haxe_ds_ObjectMap().default)(); } }; DataLoader.prototype.__class__ = DataLoader.prototype.constructor = $hxClasses["starling.assets.DataLoader"] = DataLoader; // Init // Statics DataLoader.getHttpHeader = function(headers,headerName) { if(headers != null) { var _g = 0; while(_g < headers.length) { var header = headers[_g]; ++_g; if(header.name == headerName) { return header.value; } } } return null; } DataLoader.HTTP_RESPONSE_STATUS = "httpResponseStatus" // Export exports.default = DataLoader;