UNPKG

openfl

Version:

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

275 lines (258 loc) 11.8 kB
// Class: openfl.display.Loader 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 openfl_display_DisplayObjectContainer() {return require("./../../openfl/display/DisplayObjectContainer");} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_errors_Error() {return require("./../../openfl/errors/Error");} function openfl_utils__$internal_Lib() {return require("./../../openfl/utils/_internal/Lib");} function openfl_events_Event() {return require("./../../openfl/events/Event");} function openfl_Lib() {return require("./../../openfl/Lib");} function StringTools() {return require("./../../StringTools");} function openfl_display_BitmapData() {return require("./../../openfl/display/BitmapData");} function openfl_net_URLLoader() {return require("./../../openfl/net/URLLoader");} function openfl_utils_Assets() {return require("./../../openfl/utils/Assets");} function openfl_events_IOErrorEvent() {return require("./../../openfl/events/IOErrorEvent");} function Std() {return require("./../../Std");} function openfl_display_Bitmap() {return require("./../../openfl/display/Bitmap");} function openfl_events_ProgressEvent() {return require("./../../openfl/events/ProgressEvent");} function lime_utils_AssetManifest() {return require("./../../lime/utils/AssetManifest");} function haxe_io_Path() {return require("./../../haxe/io/Path");} function lime_utils_AssetLibrary() {return require("./../../lime/utils/AssetLibrary");} function openfl_utils_AssetLibrary() {return require("./../../openfl/utils/AssetLibrary");} function openfl_display_Sprite() {return require("./../../openfl/display/Sprite");} function openfl_display_LoaderInfo() {return require("./../../openfl/display/LoaderInfo");} // Constructor var Loader = function() { (openfl_display_DisplayObjectContainer().default).call(this); this.__drawableType = 4; this.contentLoaderInfo = (openfl_display_LoaderInfo().default).create(this); this.uncaughtErrorEvents = this.contentLoaderInfo.uncaughtErrorEvents; this.__unloaded = true; } // Meta Loader.__name__ = "openfl.display.Loader"; Loader.__isInterface__ = false; Loader.__super__ = (openfl_display_DisplayObjectContainer().default); Loader.prototype = $extend((openfl_display_DisplayObjectContainer().default).prototype, { addChild: function(child) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Error #2069: The Loader class does not implement this method.",2069)); }, addChildAt: function(child,index) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Error #2069: The Loader class does not implement this method.",2069)); }, close: function() { (openfl_utils__$internal_Lib().default).notImplemented({ fileName : "../node_modules/openfl-haxelib/src/openfl/display/Loader.hx", lineNumber : 229, className : "openfl.display.Loader", methodName : "close"}); }, load: function(request,context) { this.unload(); var openEvent = new (openfl_events_Event().default)("open"); this.contentLoaderInfo.dispatchEvent(openEvent); this.contentLoaderInfo.loaderURL = (openfl_Lib().default).get_current().get_loaderInfo().url; this.contentLoaderInfo.url = request.url; this.__unloaded = false; if(request.contentType == null || request.contentType == "") { var extension = ""; this.__path = request.url; var queryIndex = this.__path.indexOf("?"); if(queryIndex > -1) { this.__path = this.__path.substring(0,queryIndex); } while((StringTools().default).endsWith(this.__path,"/")) this.__path = this.__path.substring(0,this.__path.length - 1); if((StringTools().default).endsWith(this.__path,".bundle")) { this.__path += "/library.json"; if(queryIndex > -1) { request.url = this.__path + request.url.substring(queryIndex); } else { request.url = this.__path; } } var extIndex = this.__path.lastIndexOf("."); if(extIndex > -1) { extension = this.__path.substring(extIndex + 1); } var tmp; switch(extension) { case "gif": tmp = "image/gif"; break; case "jpeg":case "jpg": tmp = "image/jpeg"; break; case "js": tmp = "application/javascript"; break; case "json": tmp = "application/json"; break; case "png": tmp = "image/png"; break; case "swf": tmp = "application/x-shockwave-flash"; break; default: tmp = "application/x-www-form-urlencoded"; } this.contentLoaderInfo.contentType = tmp; } else { this.contentLoaderInfo.contentType = request.contentType; } if(this.contentLoaderInfo.contentType.indexOf("image/") > -1 && request.method == "GET" && (request.requestHeaders == null || request.requestHeaders.length == 0) && request.userAgent == null) { (openfl_display_BitmapData().default).loadFromFile(request.url).onComplete($bind(this,this.BitmapData_onLoad)).onError($bind(this,this.BitmapData_onError)).onProgress($bind(this,this.BitmapData_onProgress)); return; } var loader = new (openfl_net_URLLoader().default)(); loader.dataFormat = "binary"; if(this.contentLoaderInfo.contentType.indexOf("/json") > -1 || this.contentLoaderInfo.contentType.indexOf("/javascript") > -1 || this.contentLoaderInfo.contentType.indexOf("/ecmascript") > -1) { loader.dataFormat = "text"; } loader.addEventListener("complete",$bind(this,this.loader_onComplete)); loader.addEventListener("ioError",$bind(this,this.loader_onError)); loader.addEventListener("progress",$bind(this,this.loader_onProgress)); loader.load(request); }, loadBytes: function(buffer,context) { (openfl_display_BitmapData().default).loadFromBytes(buffer).onComplete($bind(this,this.BitmapData_onLoad)).onError($bind(this,this.BitmapData_onError)); }, removeChild: function(child) { if(child == this.content) { return (openfl_display_DisplayObjectContainer().default).prototype.removeChild.call(this,this.content); } else { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Error #2069: The Loader class does not implement this method.",2069)); } }, removeChildAt: function(index) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Error #2069: The Loader class does not implement this method.",2069)); }, setChildIndex: function(child,index) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_Error().default)("Error #2069: The Loader class does not implement this method.",2069)); }, unload: function() { if(!this.__unloaded) { if(this.content != null && this.content.parent == this) { (openfl_display_DisplayObjectContainer().default).prototype.removeChild.call(this,this.content); } if(this.__library != null) { (openfl_utils_Assets().default).unloadLibrary(this.contentLoaderInfo.url); this.__library = null; } this.content = null; this.contentLoaderInfo.url = null; this.contentLoaderInfo.contentType = null; this.contentLoaderInfo.content = null; this.contentLoaderInfo.bytesLoaded = 0; this.contentLoaderInfo.bytesTotal = 0; this.contentLoaderInfo.width = 0; this.contentLoaderInfo.height = 0; this.__unloaded = true; this.contentLoaderInfo.dispatchEvent(new (openfl_events_Event().default)("unload")); } }, unloadAndStop: function(gc) { if(gc == null) { gc = true; } if(this.content != null) { this.content.__stopAllMovieClips(); } var _g = 0; var _g1 = this.get_numChildren(); while(_g < _g1) { var i = _g++; this.getChildAt(i).__stopAllMovieClips(); } this.unload(); var gc1 = gc; }, __dispatchError: function(text) { var event = new (openfl_events_IOErrorEvent().default)("ioError"); event.text = text; this.contentLoaderInfo.dispatchEvent(event); }, __setContent: function(content,width,height) { this.content = content; this.contentLoaderInfo.content = content; this.contentLoaderInfo.width = width; this.contentLoaderInfo.height = height; if(content != null) { (openfl_display_DisplayObjectContainer().default).prototype.addChildAt.call(this,content,0); } }, BitmapData_onError: function(error) { this.__dispatchError((Std().default).string(error)); }, BitmapData_onLoad: function(bitmapData) { if(bitmapData == null) { this.__dispatchError("Unknown error"); return; } this.__setContent(new (openfl_display_Bitmap().default)(bitmapData),bitmapData.width,bitmapData.height); this.contentLoaderInfo.dispatchEvent(new (openfl_events_Event().default)("complete")); }, BitmapData_onProgress: function(bytesLoaded,bytesTotal) { var event = new (openfl_events_ProgressEvent().default)("progress"); event.bytesLoaded = bytesLoaded; event.bytesTotal = bytesTotal; this.contentLoaderInfo.dispatchEvent(event); }, loader_onComplete: function(event) { var _gthis = this; var loader = event.target; if(this.contentLoaderInfo.contentType != null && this.contentLoaderInfo.contentType.indexOf("/json") > -1) { var manifest = (lime_utils_AssetManifest().default).parse(loader.data,(haxe_io_Path().default).directory(this.__path)); if(manifest == null) { this.__dispatchError("Cannot parse asset manifest"); return; } var library = (lime_utils_AssetLibrary().default).fromManifest(manifest); if(library == null) { this.__dispatchError("Cannot open library"); return; } if(((library) instanceof (openfl_utils_AssetLibrary().default))) { library.load().onComplete(function(_) { _gthis.__library = library; (openfl_utils_Assets().default).registerLibrary(_gthis.contentLoaderInfo.url,_gthis.__library); if(manifest.name != null && !(openfl_utils_Assets().default).hasLibrary(manifest.name)) { (openfl_utils_Assets().default).registerLibrary(manifest.name,_gthis.__library); } var clip = _gthis.__library.getMovieClip(""); var tmp = (Std().default).int(clip.get_width()); var tmp1 = (Std().default).int(clip.get_height()); _gthis.__setContent(clip,tmp,tmp1); _gthis.contentLoaderInfo.dispatchEvent(new (openfl_events_Event().default)("complete")); }).onError(function(e) { _gthis.__dispatchError(e); }); } } else if(this.contentLoaderInfo.contentType != null && (this.contentLoaderInfo.contentType.indexOf("/javascript") > -1 || this.contentLoaderInfo.contentType.indexOf("/ecmascript") > -1)) { this.__setContent(new (openfl_display_Sprite().default)(),0,0); (eval)("(function () {" + (Std().default).string(loader.data) + "})()"); this.contentLoaderInfo.dispatchEvent(new (openfl_events_Event().default)("complete")); } else { this.contentLoaderInfo.bytes = loader.data; (openfl_display_BitmapData().default).loadFromBytes(loader.data).onComplete($bind(this,this.BitmapData_onLoad)).onError($bind(this,this.BitmapData_onError)); } }, loader_onError: function(event) { event.target = this.contentLoaderInfo; this.contentLoaderInfo.dispatchEvent(event); }, loader_onProgress: function(event) { event.target = this.contentLoaderInfo; this.contentLoaderInfo.dispatchEvent(event); } }); Loader.prototype.__class__ = Loader.prototype.constructor = $hxClasses["openfl.display.Loader"] = Loader; // Init // Statics Loader.__meta__ = { fields : { BitmapData_onError : { SuppressWarnings : ["checkstyle:Dynamic"]}}} // Export exports.default = Loader;