/** * @author Mat Groves http://matgroves.com/ @Doormat23 */ /** * The sprite sheet loader is used to load in JSON sprite sheet data * To generate the data you can use http://www.codeandweb.com/texturepacker and publish the "JSON" format * There is a free version so thats nice, although the paid version is great value for money. * It is highly recommended to use Sprite sheets (also know as texture atlas") as it means sprite"s can be batched and drawn together for highly increased rendering speed. * Once the data has been loaded the frames are stored in the PIXI texture cache and can be accessed though PIXI.Texture.fromFrameId() and PIXI.Sprite.fromFromeId() * This loader will also load the image file that the Spritesheet points to as well as the data. * When loaded this class will dispatch a "loaded" event * @class SpriteSheetLoader * @extends EventTarget * @constructor * @param {String} url the url of the sprite sheet JSON file * @param {Boolean} crossorigin */ PIXI.JsonLoader = function (url, crossorigin) { PIXI.EventTarget.call(this); this.url = url; this.baseUrl = url.replace(/[^\/]*$/, ""); this.crossorigin = crossorigin; }; // constructor PIXI.JsonLoader.constructor = PIXI.JsonLoader; /** * This will begin loading the JSON file */ PIXI.JsonLoader.prototype.load = function () { this.ajaxRequest = new AjaxRequest(); var scope = this; this.ajaxRequest.onreadystatechange = function () { scope.onJSONLoaded(); }; this.ajaxRequest.open("GET", this.url, true); if (this.ajaxRequest.overrideMimeType) this.ajaxRequest.overrideMimeType("application/json"); this.ajaxRequest.send(null); }; /** * Invoke when JSON file is loaded * @private */ PIXI.JsonLoader.prototype.onJSONLoaded = function () { if (this.ajaxRequest.readyState == 4) { if (this.ajaxRequest.status == 200 || window.location.href.indexOf("http") == -1) { this.json = JSON.parse(this.ajaxRequest.responseText); this.onLoaded(); } else { this.onError(); } } }; /** * Invoke when json file loaded * @private */ PIXI.JsonLoader.prototype.onLoaded = function () { this.dispatchEvent({ type: "loaded", content: this }); }; /** * Invoke when error occured * @private */ PIXI.JsonLoader.prototype.onError = function () { this.dispatchEvent({ type: "error", content: this }); };