#

API Docs for: 1.4.3
Show: Inherited Protected Private Deprecated

# File: src/pixi/loaders/ImageLoader.js

    /**
     * @author Mat Groves http://matgroves.com/ @Doormat23
     */

    /**
     * The image loader class is responsible for loading images file formats ('jpeg', 'jpg', 'png' and 'gif')
     * Once the image has been loaded it is stored in the PIXI texture cache and can be accessed though PIXI.Texture.fromFrameId() and PIXI.Sprite.fromFrameId()
     * When loaded this class will dispatch a 'loaded' event
     *
     * @class ImageLoader
     * @uses EventTarget
     * @constructor
     * @param url {String} The url of the image
     * @param crossorigin {Boolean} Whether requests should be treated as crossorigin
     */
    PIXI.ImageLoader = function(url, crossorigin)
    {
        PIXI.EventTarget.call(this);

        /**
         * The texture being loaded
         *
         * @property texture
         * @type Texture
         */
        this.texture = PIXI.Texture.fromImage(url, crossorigin);

        /**
         * if the image is loaded with loadFramedSpriteSheet
         * frames will contain the sprite sheet frames
         *
         */
        this.frames = [];
    };

    // constructor
    PIXI.ImageLoader.prototype.constructor = PIXI.ImageLoader;

    /**
     * Loads image or takes it from cache
     *
     * @method load
     */
    PIXI.ImageLoader.prototype.load = function()
    {
        if(!this.texture.baseTexture.hasLoaded)
        {
            var scope = this;
            this.texture.baseTexture.addEventListener('loaded', function()
            {
                scope.onLoaded();
            });
        }
        else
        {
            this.onLoaded();
        }
    };

    /**
     * Invoked when image file is loaded or it is already cached and ready to use
     *
     * @method onLoaded
     * @private
     */
    PIXI.ImageLoader.prototype.onLoaded = function()
    {
        this.dispatchEvent({type: 'loaded', content: this});
    };

    /**
     * Loads image and split it to uniform sized frames
     *
     *
     * @method loadFramedSpriteSheet
     * @param frameWidth {Number} width of each frame
     * @param frameHeight {Number} height of each frame
     * @param textureName {String} if given, the frames will be cached in <textureName>-<ord> format
     */
    PIXI.ImageLoader.prototype.loadFramedSpriteSheet = function(frameWidth, frameHeight, textureName)
    {
        this.frames = [];
        var cols = Math.floor(this.texture.width / frameWidth);
        var rows = Math.floor(this.texture.height / frameHeight);

        var i=0;
        for (var y=0; y<rows; y++)
        {
            for (var x=0; x<cols; x++,i++)
            {
                var texture = new PIXI.Texture(this.texture, {
                    x: x*frameWidth,
                    y: y*frameHeight,
                    width: frameWidth,
                    height: frameHeight
                });

                this.frames.push(texture);
                if (textureName) PIXI.TextureCache[textureName + '-' + i] = texture;
            }
        }

        if(!this.texture.baseTexture.hasLoaded)
        {
            var scope = this;
            this.texture.baseTexture.addEventListener('loaded', function() {
                scope.onLoaded();
            });
        }
        else
        {
            this.onLoaded();
        }
    };