UNPKG

starling-framework

Version:

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

992 lines (976 loc) 34.6 kB
// Class: starling.utils.AssetManager 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; var $bind = require("./../../bind_stub").default; var $extend = require("./../../extend_stub").default; function starling_events_EventDispatcher() {return require("./../../starling/events/EventDispatcher");} function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} function openfl__$Vector_VectorIterator() {return require("./../../openfl/_Vector/VectorIterator");} function Xml() {return require("./../../Xml");} function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");} function openfl_net_URLRequest() {return $import(require("openfl/net/URLRequest"));} function openfl_Lib() {return $import(require("openfl/Lib"));} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_errors_ArgumentError() {return $import(require("openfl/errors/ArgumentError"));} function starling_core_Starling() {return require("./../../starling/core/Starling");} function openfl_errors_Error() {return $import(require("openfl/errors/Error"));} function haxe_Timer() {return require("./../../haxe/Timer");} function starling_textures_TextureAtlas() {return require("./../../starling/textures/TextureAtlas");} function starling_text_BitmapFont() {return require("./../../starling/text/BitmapFont");} function starling_text_TextField() {return require("./../../starling/text/TextField");} function openfl_media_Sound() {return $import(require("openfl/media/Sound"));} function openfl_display_Bitmap() {return $import(require("openfl/display/Bitmap"));} function starling_textures_Texture() {return require("./../../starling/textures/Texture");} function js_Boot() {return require("./../../js/Boot");} function Std() {return require("./../../Std");} function openfl_utils_ByteArray() {return $import(require("openfl/utils/ByteArray"));} function starling_textures_AtfData() {return require("./../../starling/textures/AtfData");} function EReg() {return require("./../../EReg");} function openfl_system_LoaderContext() {return $import(require("openfl/system/LoaderContext"));} function openfl_display_Loader() {return $import(require("openfl/display/Loader"));} function Type() {return require("./../../Type");} function openfl_net_URLLoader() {return $import(require("openfl/net/URLLoader"));} function haxe_Log() {return require("./../../haxe/Log");} function HxOverrides() {return require("./../../HxOverrides");} function starling_textures_TextureOptions() {return require("./../../starling/textures/TextureOptions");} // Constructor var AssetManager = function(scaleFactor,useMipmaps) { if(useMipmaps == null) { useMipmaps = false; } if(scaleFactor == null) { scaleFactor = 1; } this.__numLoadingQueues = 0; (starling_events_EventDispatcher().default).call(this); this.__defaultTextureOptions = new (starling_textures_TextureOptions().default)(scaleFactor,useMipmaps); this.__textures = new (haxe_ds_StringMap().default)(); this.__atlases = new (haxe_ds_StringMap().default)(); this.__sounds = new (haxe_ds_StringMap().default)(); this.__xmls = new (haxe_ds_StringMap().default)(); this.__objects = new (haxe_ds_StringMap().default)(); this.__byteArrays = new (haxe_ds_StringMap().default)(); this.__bitmapFonts = new (haxe_ds_StringMap().default)(); this.__numConnections = 3; this.__verbose = true; this.__queue = []; } // Meta AssetManager.__name__ = "starling.utils.AssetManager"; AssetManager.__isInterface__ = false; AssetManager.__super__ = (starling_events_EventDispatcher().default); AssetManager.prototype = $extend((starling_events_EventDispatcher().default).prototype, { dispose: function() { var texture = this.__textures.iterator(); while(texture.hasNext()) { var texture1 = texture.next(); texture1.dispose(); } var atlas = this.__atlases.iterator(); while(atlas.hasNext()) { var atlas1 = atlas.next(); atlas1.dispose(); } var byteArray = this.__byteArrays.iterator(); while(byteArray.hasNext()) { var byteArray1 = byteArray.next(); byteArray1.clear(); } var bitmapFont = this.__bitmapFonts.iterator(); while(bitmapFont.hasNext()) { var bitmapFont1 = bitmapFont.next(); bitmapFont1.dispose(); } }, getTexture: function(name) { if(this.__textures.exists(name)) { return this.__textures.get(name); } else { var atlas = this.__atlases.iterator(); while(atlas.hasNext()) { var atlas1 = atlas.next(); var texture = atlas1.getTexture(name); if(texture != null) { return texture; } } return null; } }, getTextures: function(prefix,out) { if(prefix == null) { prefix = ""; } if(out == null) { out = (openfl__$Vector_Vector_$Impl_$().default)._new(); } var name = new (openfl__$Vector_VectorIterator().default)(this.getTextureNames(prefix,AssetManager.sNames)); while(name.hasNext()) { var name1 = name.next(); (openfl__$Vector_Vector_$Impl_$().default).set(out,out.length,this.getTexture(name1)); } AssetManager.sNames.length = 0; return out; }, getTextureNames: function(prefix,out) { if(prefix == null) { prefix = ""; } out = this.getDictionaryKeys(this.__textures,prefix,out); var atlas = this.__atlases.iterator(); while(atlas.hasNext()) { var atlas1 = atlas.next(); atlas1.getNames(prefix,out); } (Array.prototype.sort.call)(out,$bind(this,this.compare)); return out; }, getTextureAtlas: function(name) { return this.__atlases.get(name); }, getTextureAtlasNames: function(prefix,out) { if(prefix == null) { prefix = ""; } return this.getDictionaryKeys(this.__atlases,prefix,out); }, getSound: function(name) { return this.__sounds.get(name); }, getSoundNames: function(prefix,out) { if(prefix == null) { prefix = ""; } return this.getDictionaryKeys(this.__sounds,prefix,out); }, playSound: function(name,startTime,loops,transform) { if(loops == null) { loops = 0; } if(startTime == null) { startTime = 0; } if(this.__sounds.exists(name)) { return this.getSound(name).play(startTime,loops,transform); } else { return null; } }, getXml: function(name) { return this.__xmls.get(name); }, getXmlNames: function(prefix,out) { if(prefix == null) { prefix = ""; } return this.getDictionaryKeys(this.__xmls,prefix,out); }, getObject: function(name) { return this.__objects.get(name); }, getObjectNames: function(prefix,out) { if(prefix == null) { prefix = ""; } return this.getDictionaryKeys(this.__objects,prefix,out); }, getByteArray: function(name) { return this.__byteArrays.get(name); }, getByteArrayNames: function(prefix,out) { if(prefix == null) { prefix = ""; } return this.getDictionaryKeys(this.__byteArrays,prefix,out); }, getBitmapFont: function(name) { return this.__bitmapFonts.get(name); }, getBitmapFontNames: function(prefix,out) { if(prefix == null) { prefix = ""; } return this.getDictionaryKeys(this.__bitmapFonts,prefix,out); }, addTexture: function(name,texture) { this.log("Adding texture '" + name + "'"); if(this.__textures.exists(name)) { this.log("Warning: name was already in use; the previous texture will be replaced."); this.__textures.get(name).dispose(); } this.__textures.set(name,texture); }, addTextureAtlas: function(name,atlas) { this.log("Adding texture atlas '" + name + "'"); if(this.__atlases.exists(name) && atlas != this.__atlases.get(name)) { this.log("Warning: name was already in use; the previous atlas will be replaced."); this.__atlases.get(name).dispose(); } this.__atlases.set(name,atlas); }, addSound: function(name,sound) { this.log("Adding sound '" + name + "'"); if(this.__sounds.exists(name) && sound != this.__sounds.get(name)) { this.log("Warning: name was already in use; the previous sound will be replaced."); } this.__sounds.set(name,sound); }, addXml: function(name,xml) { this.log("Adding XML '" + name + "'"); if(this.__xmls.exists(name) && xml != this.__xmls.get(name)) { this.log("Warning: name was already in use; the previous XML will be replaced."); } if(xml != null && typeof(xml) == "string") { xml = (Xml().default).parse(xml).firstElement(); } var v = xml; this.__xmls.set(name,v); }, addObject: function(name,object) { this.log("Adding object '" + name + "'"); if(this.__objects.exists(name) && object != this.__objects.get(name)) { this.log("Warning: name was already in use; the previous object will be replaced."); } var v = object; this.__objects.set(name,v); }, addByteArray: function(name,byteArray) { this.log("Adding byte array '" + name + "'"); if(this.__byteArrays.exists(name) && byteArray != this.__byteArrays.get(name)) { this.log("Warning: name was already in use; the previous byte array will be replaced."); this.__byteArrays.get(name).clear(); } this.__byteArrays.set(name,byteArray); }, addBitmapFont: function(name,font) { this.log("Adding bitmap font '" + name + "'"); if(this.__bitmapFonts.exists(name) && font != this.__bitmapFonts.get(name)) { this.log("Warning: name was already in use; the previous font will be replaced."); this.__bitmapFonts.get(name).dispose(); } this.__bitmapFonts.set(name,font); }, removeTexture: function(name,dispose) { if(dispose == null) { dispose = true; } this.log("Removing texture '" + name + "'"); if(dispose && this.__textures.exists(name)) { this.__textures.get(name).dispose(); } this.__textures.remove(name); }, removeTextureAtlas: function(name,dispose) { if(dispose == null) { dispose = true; } this.log("Removing texture atlas '" + name + "'"); if(dispose && this.__atlases.exists(name)) { this.__atlases.get(name).dispose(); } this.__atlases.remove(name); }, removeSound: function(name) { this.log("Removing sound '" + name + "'"); this.__sounds.remove(name); }, removeXml: function(name,dispose) { if(dispose == null) { dispose = true; } this.log("Removing xml '" + name + "'"); this.__xmls.remove(name); }, removeObject: function(name) { this.log("Removing object '" + name + "'"); this.__objects.remove(name); }, removeByteArray: function(name,dispose) { if(dispose == null) { dispose = true; } this.log("Removing byte array '" + name + "'"); if(dispose && this.__byteArrays.exists(name)) { this.__byteArrays.get(name).clear(); } this.__byteArrays.remove(name); }, removeBitmapFont: function(name,dispose) { if(dispose == null) { dispose = true; } this.log("Removing bitmap font '" + name + "'"); if(dispose && this.__bitmapFonts.exists(name)) { this.__bitmapFonts.get(name).dispose(); } this.__bitmapFonts.remove(name); }, purgeQueue: function() { this.__queue.splice(0,this.__queue.length); this.dispatchEventWith("cancel"); }, purge: function() { this.log("Purging all assets, emptying queue"); this.purgeQueue(); this.dispose(); this.__textures = new (haxe_ds_StringMap().default)(); this.__atlases = new (haxe_ds_StringMap().default)(); this.__sounds = new (haxe_ds_StringMap().default)(); this.__xmls = new (haxe_ds_StringMap().default)(); this.__objects = new (haxe_ds_StringMap().default)(); this.__byteArrays = new (haxe_ds_StringMap().default)(); this.__bitmapFonts = new (haxe_ds_StringMap().default)(); }, enqueue: function(rawAssets) { var _g = 0; while(_g < rawAssets.length) { var rawAsset = rawAssets[_g]; ++_g; if(rawAsset == null) { continue; } else if(((rawAsset) instanceof Array)) { this.enqueue(rawAsset); } else if(typeof(rawAsset) == "string" || ((rawAsset) instanceof (openfl_net_URLRequest().default))) { this.enqueueWithName(rawAsset); } else { this.log("Ignoring unsupported asset type: " + (openfl_Lib().default).getQualifiedClassName(rawAsset)); } } }, enqueueWithName: function(asset,name,options) { if(name == null) { name = this.getName(asset); } if(options == null) { options = this.__defaultTextureOptions.clone(); } else { options = options.clone(); } this.log("Enqueuing '" + name + "'"); this.__queue.push({ name : name, asset : asset, options : options}); return name; }, loadQueue: function(onProgress) { var _gthis = this; if(onProgress == null) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Argument 'onProgress' must not be null")); } if(this.__queue.length == 0) { onProgress(1.0); return; } this.__starling = (starling_core_Starling().default).get_current(); if(this.__starling == null || this.__starling.get_context() == null) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("The Starling instance needs to be ready before assets can be loaded.")); } var PROGRESS_PART_ASSETS = 0.9; var PROGRESS_PART_XMLS = 1.0 - PROGRESS_PART_ASSETS; var i; var canceled = false; var xmls = (openfl__$Vector_Vector_$Impl_$().default)._new(); var assetInfos = this.__queue.slice(); var assetCount = this.__queue.length; var assetProgress = []; var assetIndex = 0; var loadNextQueueElement = null; var cancel = null; var loadQueueElement = null; var updateAssetProgress = null; var processXmls = null; var processXml = null; var finish = null; loadNextQueueElement = function() { if(assetIndex < assetInfos.length) { assetIndex += 1; var index = assetIndex - 1; loadQueueElement(index,assetInfos[index]); } }; loadQueueElement = function(index1,assetInfo) { if(canceled) { return; } var onElementProgress = function(progress) { updateAssetProgress(index1,progress * 0.8); }; var onElementLoaded = function() { updateAssetProgress(index1,1.0); assetCount -= 1; if(assetCount > 0) { loadNextQueueElement(); } else { processXmls(); } }; _gthis.processRawAsset(assetInfo.name,assetInfo.asset,assetInfo.options,xmls,onElementProgress,onElementLoaded); }; updateAssetProgress = function(index2,progress1) { assetProgress[index2] = progress1; var sum = 0.0; var len = assetProgress.length; var _g = 0; var _g1 = len; while(_g < _g1) { var i1 = _g++; sum += assetProgress[i1]; } onProgress(sum / len * PROGRESS_PART_ASSETS); }; processXmls = function() { (Array.prototype.sort.call)(xmls,function(a,b) { if(a.get_nodeName().split(":").pop() == "TextureAtlas") { return -1; } else { return 1; } }); (haxe_Timer().default).delay(function() { processXml(0); },1); }; processXml = function(index3) { if(canceled) { return; } else if(index3 == xmls.length) { finish(); return; } var texture; var name; var fontName; var xml = xmls[index3]; var rootNode = xml.get_nodeName(); var xmlProgress = (index3 + 1) / (xmls.length + 1); var bitmapFont; if(rootNode == "TextureAtlas") { var name1 = xml.get("imagePath"); name = _gthis.getName(name1); texture = _gthis.getTexture(name); if(texture != null) { _gthis.addTextureAtlas(name,new (starling_textures_TextureAtlas().default)(texture,xml)); } else { _gthis.log("Cannot create atlas: texture '" + name + "' is missing."); } if(_gthis.__keepAtlasXmls) { _gthis.addXml(name,xml); } } else if(rootNode == "font") { var name2 = xml.elementsNamed("pages").next().elementsNamed("page").next().get("file"); name = _gthis.getName(name2); fontName = _gthis.__registerBitmapFontsWithFontFace ? xml.elementsNamed("info").next().get("face") : name; texture = _gthis.getTexture(name); if(texture != null) { bitmapFont = new (starling_text_BitmapFont().default)(texture,xml); _gthis.addBitmapFont(fontName,bitmapFont); (starling_text_TextField().default).registerCompositor(bitmapFont,fontName); } else { _gthis.log("Cannot create bitmap font: texture '" + name + "' is missing."); } if(_gthis.__keepFontXmls) { _gthis.addXml(name,xml); } } else { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("XML contents not recognized: " + rootNode)); } onProgress(PROGRESS_PART_ASSETS + PROGRESS_PART_XMLS * xmlProgress); var f = processXml; var a1 = index3 + 1; (haxe_Timer().default).delay(function() { f(a1); },1); }; cancel = function() { _gthis.removeEventListener("cancel",cancel); _gthis.__numLoadingQueues--; canceled = true; }; finish = function() { (haxe_Timer().default).delay(function() { if(!canceled) { cancel(); onProgress(1.0); } },1); }; var _g2 = 0; var _g11 = assetCount; while(_g2 < _g11) { var i2 = _g2++; assetProgress[i2] = 0.0; } var _g21 = 0; var _g3 = this.__numConnections; while(_g21 < _g3) { var i3 = _g21++; loadNextQueueElement(); } this.__queue.splice(0,this.__queue.length); this.__numLoadingQueues++; this.addEventListener("cancel",cancel); }, processRawAsset: function(name,rawAsset,options,xmls,onProgress,onComplete) { var _gthis = this; var canceled = false; var cancel = null; var progress = null; var process = null; process = function(asset) { var texture = null; var bytes; var object = null; var xml = null; _gthis.__starling.makeCurrent(); if(!canceled) { if(asset == null) { onComplete(); } else if(((asset) instanceof (openfl_media_Sound().default))) { _gthis.addSound(name,asset); onComplete(); } else if(((asset) instanceof (Xml().default))) { xml = asset; xml = xml.firstElement(); if(xml.get_nodeName() == "TextureAtlas" || xml.get_nodeName() == "font") { (openfl__$Vector_Vector_$Impl_$().default).push(xmls,xml); } else { _gthis.addXml(name,xml); } onComplete(); } else if(_gthis.__starling.get_context().driverInfo == "Disposed") { _gthis.log("Context lost while processing assets, retrying ..."); (haxe_Timer().default).delay(function() { process(asset); },1); return; } else if(((asset) instanceof (openfl_display_Bitmap().default))) { var process1 = options.get_onReady(); var process2 = _gthis.prependCallback(process1,function(_) { _gthis.addTexture(name,texture); onComplete(); }); options.set_onReady(process2); texture = (starling_textures_Texture().default).fromData(asset,options); texture.get_root().set_onRestore(function(_1) { _gthis.__numLostTextures++; _gthis.loadRawAsset(rawAsset,null,function(asset1) { try { if(asset1 == null) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Reload failed")); } texture.get_root().uploadBitmap((js_Boot().default).__cast(asset1 , (openfl_display_Bitmap().default))); asset1.bitmapData.dispose(); } catch( e ) { var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; if(((e1) instanceof (openfl_errors_Error().default))) { _gthis.log("Texture restoration failed for '" + name + "': " + e1.message); } else { _gthis.log("Texture restoration failed for '" + name + "': " + (Std().default).string(e1)); } } _gthis.__numRestoredTextures++; (starling_core_Starling().default).get_current().get_stage().setRequiresRedraw(); if(_gthis.__numLostTextures == _gthis.__numRestoredTextures) { _gthis.dispatchEventWith("texturesRestored"); } }); }); } else if(((asset) instanceof (openfl_utils_ByteArray().default))) { bytes = asset; if((starling_textures_AtfData().default).isAtfData(bytes)) { var process3 = options.get_onReady(); var process4 = _gthis.prependCallback(process3,function(_2) { _gthis.addTexture(name,texture); onComplete(); }); options.set_onReady(process4); texture = (starling_textures_Texture().default).fromData(bytes,options); texture.get_root().set_onRestore(function(_3) { _gthis.__numLostTextures++; _gthis.loadRawAsset(rawAsset,null,function(asset2) { try { if(asset2 == null) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Reload failed")); } texture.get_root().uploadAtfData((js_Boot().default).__cast(asset2 , (openfl_utils_ByteArray().default)),0,null); asset2.clear(); } catch( e2 ) { var e3 = ((e2) instanceof (js__$Boot_HaxeError().default)) ? e2.val : e2; if(((e3) instanceof (openfl_errors_Error().default))) { _gthis.log("Texture restoration failed for '" + name + "': " + e3.message); } else { _gthis.log("Texture restoration failed for '" + name + "': " + (Std().default).string(e3)); } } _gthis.__numRestoredTextures++; (starling_core_Starling().default).get_current().get_stage().setRequiresRedraw(); if(_gthis.__numLostTextures == _gthis.__numRestoredTextures) { _gthis.dispatchEventWith("texturesRestored"); } }); }); bytes.clear(); } else if(_gthis.byteArrayStartsWith(bytes,"{") || _gthis.byteArrayStartsWith(bytes,"[")) { try { object = JSON.parse(bytes.readUTFBytes(bytes.length)); } catch( e4 ) { var e5 = ((e4) instanceof (js__$Boot_HaxeError().default)) ? e4.val : e4; if(((e5) instanceof (openfl_errors_Error().default))) { _gthis.log("Could not parse JSON: " + e5.message); _gthis.dispatchEventWith("parseError",false,name); } else { _gthis.log("Could not parse JSON: " + (Std().default).string(e5)); _gthis.dispatchEventWith("parseError",false,name); } } if(object != null) { _gthis.addObject(name,object); } bytes.clear(); onComplete(); } else if(_gthis.byteArrayStartsWith(bytes,"<")) { try { xml = (Xml().default).parse(bytes.toString()); } catch( e6 ) { var e7 = ((e6) instanceof (js__$Boot_HaxeError().default)) ? e6.val : e6; if(((e7) instanceof (openfl_errors_Error().default))) { _gthis.log("Could not parse XML: " + e7.message); _gthis.dispatchEventWith("parseError",false,name); } else { _gthis.log("Could not parse XML: " + (Std().default).string(e7)); _gthis.dispatchEventWith("parseError",false,name); } } process(xml); bytes.clear(); } else { _gthis.addByteArray(name,bytes); onComplete(); } } else { _gthis.addObject(name,asset); onComplete(); } } asset = null; bytes = null; _gthis.removeEventListener("cancel",cancel); }; progress = function(ratio) { if(!canceled) { onProgress(ratio); } }; cancel = function() { canceled = true; }; this.addEventListener("cancel",cancel); this.loadRawAsset(rawAsset,progress,process); }, loadRawAsset: function(rawAsset,onProgress,onComplete) { var _gthis = this; var extension = null; var loaderInfo = null; var urlLoader = null; var urlRequest = null; var url = null; var complete = null; var onIoError = null; var onSecurityError = null; var onHttpResponseStatus = null; var onLoadProgress = null; var onUrlLoaderComplete = null; var onLoaderComplete = null; onIoError = function(event) { _gthis.log("IO error: " + event.text); _gthis.dispatchEventWith("ioError",false,url); complete(null); }; onSecurityError = function(event1) { _gthis.log("security error: " + event1.text); _gthis.dispatchEventWith("securityError",false,url); complete(null); }; onHttpResponseStatus = function(event2) { if(extension == null) { var headers = event2.responseHeaders; var contentType = _gthis.getHttpHeader(headers,"Content-Type"); if(contentType != null && new (EReg().default)("(audio|image)/","").split(contentType) != null) { extension = contentType.split("/").pop(); } } }; onLoadProgress = function(event3) { if(onProgress != null && event3.bytesTotal > 0) { onProgress(event3.bytesLoaded / event3.bytesTotal); } }; onUrlLoaderComplete = function(event4) { var bytes = _gthis.transformData(((urlLoader.data) instanceof (openfl_utils_ByteArray().default)) ? urlLoader.data : null,url); var sound; if(bytes == null) { complete(null); return; } if(extension != null) { extension = extension.toLowerCase(); } switch(extension) { case "gif":case "jpeg":case "jpg":case "png": var loaderContext = new (openfl_system_LoaderContext().default)(_gthis.__checkPolicyFile); var loader = new (openfl_display_Loader().default)(); loaderInfo = loader.contentLoaderInfo; loaderInfo.addEventListener("ioError",onIoError); loaderInfo.addEventListener("complete",onLoaderComplete); loader.loadBytes(bytes,loaderContext); break; case "mp3":case "mpeg":case "ogg":case "wav": sound = new (openfl_media_Sound().default)(); sound.loadCompressedDataFromByteArray(bytes,bytes.length); bytes.clear(); complete(sound); break; default: complete(bytes); } }; onLoaderComplete = function(event5) { urlLoader.data.clear(); complete(event5.target.content); }; complete = function(asset) { if(urlLoader != null) { urlLoader.removeEventListener("ioError",onIoError); urlLoader.removeEventListener("securityError",onSecurityError); urlLoader.removeEventListener("httpResponseStatus",onHttpResponseStatus); urlLoader.removeEventListener("progress",onLoadProgress); urlLoader.removeEventListener("complete",onUrlLoaderComplete); } if(loaderInfo != null) { loaderInfo.removeEventListener("ioError",onIoError); loaderInfo.removeEventListener("complete",onLoaderComplete); } onComplete(asset); }; if((Std().default).is(rawAsset,$hxClasses["Class"])) { (haxe_Timer().default).delay(function() { (Type().default).createInstance(rawAsset,[]); },1); } else if(typeof(rawAsset) == "string" || ((rawAsset) instanceof (openfl_net_URLRequest().default))) { urlRequest = ((rawAsset) instanceof (openfl_net_URLRequest().default)) ? rawAsset : null; if(urlRequest == null) { urlRequest = new (openfl_net_URLRequest().default)((js_Boot().default).__cast(rawAsset , String)); } url = urlRequest.url; extension = this.getExtensionFromUrl(url); urlLoader = new (openfl_net_URLLoader().default)(); urlLoader.dataFormat = "binary"; urlLoader.addEventListener("ioError",onIoError); urlLoader.addEventListener("securityError",onSecurityError); urlLoader.addEventListener("httpResponseStatus",onHttpResponseStatus); urlLoader.addEventListener("progress",onLoadProgress); urlLoader.addEventListener("complete",onUrlLoaderComplete); urlLoader.load(urlRequest); } }, getName: function(rawAsset) { var name = null; if(typeof(rawAsset) == "string") { name = (js_Boot().default).__cast(rawAsset , String); } else if(((rawAsset) instanceof (openfl_net_URLRequest().default))) { name = ((js_Boot().default).__cast(rawAsset , (openfl_net_URLRequest().default))).url; } if(name != null) { name = new (EReg().default)("%20","g").replace(name," "); name = this.getBasenameFromUrl(name); if(name != null) { return name; } else { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Could not extract name from String '" + (Std().default).string(rawAsset) + "'")); } } else { name = (Type().default).getClassName(rawAsset); throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("Cannot extract names for objects of type '" + name + "'")); } }, transformData: function(data,url) { return data; }, log: function(message) { if(this.__verbose) { (haxe_Log().default).trace("[AssetManager] " + message,{ fileName : "../src/starling/utils/AssetManager.hx", lineNumber : 1292, className : "starling.utils.AssetManager", methodName : "log"}); } }, byteArrayStartsWith: function(bytes,char) { var start = 0; var length = bytes.length; var wanted = (HxOverrides().default).cca(char,0); if(length >= 4 && (bytes.get(0) == 0 && bytes.get(1) == 0 && bytes.get(2) == 254 && bytes.get(3) == 255) || bytes.get(0) == 255 && bytes.get(1) == 254 && bytes.get(2) == 0 && bytes.get(3) == 0) { start = 4; } else if(length >= 3 && bytes.get(0) == 239 && bytes.get(1) == 187 && bytes.get(2) == 191) { start = 3; } else if(length >= 2 && (bytes.get(0) == 254 && bytes.get(1) == 255) || bytes.get(0) == 255 && bytes.get(1) == 254) { start = 2; } var _g = start; var _g1 = length; while(_g < _g1) { var i = _g++; var byte = bytes.get(i); if(byte == 0 || byte == 10 || byte == 13 || byte == 32) { continue; } else { return byte == wanted; } } return false; }, getDictionaryKeys: function(dictionary,prefix,out) { if(prefix == null) { prefix = ""; } if(out == null) { out = (openfl__$Vector_Vector_$Impl_$().default)._new(); } var name = dictionary.keys(); while(name.hasNext()) { var name1 = name.next(); if(name1.indexOf(prefix) == 0) { (openfl__$Vector_Vector_$Impl_$().default).set(out,out.length,name1); } } (Array.prototype.sort.call)(out,$bind(this,this.compare)); return out; }, 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; }, getBasenameFromUrl: function(url) { var isMatched = AssetManager.NAME_REGEX.match(url); if(isMatched) { return AssetManager.NAME_REGEX.matched(1); } else { return null; } }, getExtensionFromUrl: function(url) { var isMatched = AssetManager.NAME_REGEX.match(url); if(isMatched) { return AssetManager.NAME_REGEX.matched(2); } else { return null; } }, prependCallback: function(oldCallback,newCallback) { if(oldCallback == null) { return newCallback; } else if(newCallback == null) { return oldCallback; } else { return function(_) { newCallback(); oldCallback(); }; } }, compare: function(a,b) { if(a < b) { return -1; } else if(a > b) { return 1; } else { return 0; } }, get_queue: function() { return this.__queue; }, get_numQueuedAssets: function() { return this.__queue.length; }, get_verbose: function() { return this.__verbose; }, set_verbose: function(value) { return this.__verbose = value; }, get_isLoading: function() { return this.__numLoadingQueues > 0; }, get_useMipMaps: function() { return this.__defaultTextureOptions.get_mipMapping(); }, set_useMipMaps: function(value) { return this.__defaultTextureOptions.set_mipMapping(value); }, get_scaleFactor: function() { return this.__defaultTextureOptions.get_scale(); }, set_scaleFactor: function(value) { return this.__defaultTextureOptions.set_scale(value); }, get_textureFormat: function() { return this.__defaultTextureOptions.get_format(); }, set_textureFormat: function(value) { return this.__defaultTextureOptions.set_format(value); }, get_forcePotTextures: function() { return this.__defaultTextureOptions.get_forcePotTexture(); }, set_forcePotTextures: function(value) { return this.__defaultTextureOptions.set_forcePotTexture(value); }, get_checkPolicyFile: function() { return this.__checkPolicyFile; }, set_checkPolicyFile: function(value) { return this.__checkPolicyFile = value; }, get_keepAtlasXmls: function() { return this.__keepAtlasXmls; }, set_keepAtlasXmls: function(value) { return this.__keepAtlasXmls = value; }, get_keepFontXmls: function() { return this.__keepFontXmls; }, set_keepFontXmls: function(value) { return this.__keepFontXmls = value; }, get_numConnections: function() { return this.__numConnections; }, set_numConnections: function(value) { return this.__numConnections = value; }, get_registerBitmapFontsWithFontFace: function() { return this.__registerBitmapFontsWithFontFace; }, set_registerBitmapFontsWithFontFace: function(value) { return this.__registerBitmapFontsWithFontFace = value; } }); AssetManager.prototype.__class__ = AssetManager.prototype.constructor = $hxClasses["starling.utils.AssetManager"] = AssetManager; // Init Object.defineProperties(AssetManager.prototype,{ numQueuedAssets : { get : function () { return this.get_numQueuedAssets (); }}, verbose : { get : function () { return this.get_verbose (); }, set : function (v) { return this.set_verbose (v); }}, isLoading : { get : function () { return this.get_isLoading (); }}, useMipMaps : { get : function () { return this.get_useMipMaps (); }, set : function (v) { return this.set_useMipMaps (v); }}, scaleFactor : { get : function () { return this.get_scaleFactor (); }, set : function (v) { return this.set_scaleFactor (v); }}, textureFormat : { get : function () { return this.get_textureFormat (); }, set : function (v) { return this.set_textureFormat (v); }}, forcePotTextures : { get : function () { return this.get_forcePotTextures (); }, set : function (v) { return this.set_forcePotTextures (v); }}, checkPolicyFile : { get : function () { return this.get_checkPolicyFile (); }, set : function (v) { return this.set_checkPolicyFile (v); }}, keepAtlasXmls : { get : function () { return this.get_keepAtlasXmls (); }, set : function (v) { return this.set_keepAtlasXmls (v); }}, keepFontXmls : { get : function () { return this.get_keepFontXmls (); }, set : function (v) { return this.set_keepFontXmls (v); }}, numConnections : { get : function () { return this.get_numConnections (); }, set : function (v) { return this.set_numConnections (v); }}}); // Statics AssetManager.HTTP_RESPONSE_STATUS = "httpResponseStatus" AssetManager.sNames = (openfl__$Vector_Vector_$Impl_$().default)._new() AssetManager.NAME_REGEX = new (EReg().default)("([^\\?/\\\\]+?)(?:\\.([\\w\\-]+))?(?:\\?.*)?$","") // Export exports.default = AssetManager;