<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>src/pixi/loaders/AssetLoader.js - Pixi.JS</title>
<link rel="stylesheet" href="http://yui.yahooapis.com/3.8.0/build/cssgrids/cssgrids-min.css">
<link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
<link rel="stylesheet" href="../assets/css/main.css" id="site_styles">
<link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
<script src="http://yui.yahooapis.com/combo?3.8.0/build/yui/yui-min.js"></script>
</head>
<body class="yui3-skin-sam">
<div id="doc">
<div id="hd" class="yui3-g header">
<div class="yui3-u-3-4">
<h1><img src="http://www.goodboydigital.com/pixijs/logo_small.png" title="Pixi.JS"></h1>
</div>
<div class="yui3-u-1-4 version">
<em>API Docs for: 1.0.0</em>
</div>
</div>
<div id="bd" class="yui3-g">
<div class="yui3-u-1-4">
<div id="docs-sidebar" class="sidebar apidocs">
<div id="api-list">
<h2 class="off-left">APIs</h2>
<div id="api-tabview" class="tabview">
<ul class="tabs">
<li><a href="#api-classes">Classes</a></li>
<li><a href="#api-modules">Modules</a></li>
</ul>
<div id="api-tabview-filter">
<input type="search" id="api-filter" placeholder="Type to filter APIs">
</div>
<div id="api-tabview-panel">
<ul id="api-classes" class="apis classes">
<li><a href="../classes/AssetLoader.html">AssetLoader</a></li>
<li><a href="../classes/BaseTexture.html">BaseTexture</a></li>
<li><a href="../classes/CanvasRenderer.html">CanvasRenderer</a></li>
<li><a href="../classes/DisplayObject.html">DisplayObject</a></li>
<li><a href="../classes/DisplayObjectContainer.html">DisplayObjectContainer</a></li>
<li><a href="../classes/InteractionData.html">InteractionData</a></li>
<li><a href="../classes/InteractionManager.html">InteractionManager</a></li>
<li><a href="../classes/MovieClip.html">MovieClip</a></li>
<li><a href="../classes/Point.html">Point</a></li>
<li><a href="../classes/Rectangle.html">Rectangle</a></li>
<li><a href="../classes/Sprite.html">Sprite</a></li>
<li><a href="../classes/SpriteSheetLoader.html">SpriteSheetLoader</a></li>
<li><a href="../classes/Stage.html">Stage</a></li>
<li><a href="../classes/Texture.html">Texture</a></li>
<li><a href="../classes/TilingSprite.html">TilingSprite</a></li>
<li><a href="../classes/WebGLBatch.html">WebGLBatch</a></li>
<li><a href="../classes/WebGLRenderer.html">WebGLRenderer</a></li>
</ul>
<ul id="api-modules" class="apis modules">
<li><a href="../modules/PIXI.html">PIXI</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="yui3-u-3-4">
<div id="api-options">
Show:
<label for="api-show-inherited">
<input type="checkbox" id="api-show-inherited" checked>
Inherited
</label>
<label for="api-show-protected">
<input type="checkbox" id="api-show-protected">
Protected
</label>
<label for="api-show-private">
<input type="checkbox" id="api-show-private">
Private
</label>
<label for="api-show-deprecated">
<input type="checkbox" id="api-show-deprecated">
Deprecated
</label>
</div>
<div class="apidocs">
<div id="docs-main">
<div class="content">
<h1 class="file-heading">File: src/pixi/loaders/AssetLoader.js</h1>
<div class="file">
<pre class="code prettyprint linenums">
/**
* @author Mat Groves http://matgroves.com/ @Doormat23
*/
/**
* A Class that loads a bunch of images / sprite sheet files. Once the assets have been loaded they are added to the PIXI Texture cache and can be accessed easily through PIXI.Texture.fromFrame(), PIXI.Texture.fromImage() and PIXI.Sprite.fromImage(), PIXI.Sprite.fromFromeId()
* When all items have been loaded this class will dispatch a 'loaded' event
* As each individual item is loaded this class will dispatch a 'progress' event
* @class AssetLoader
* @constructor
* @extends EventTarget
* @param assetURLs {Array} an array of image/sprite sheet urls that you would like loaded supported. Supported image formats include "jpeg", "jpg", "png", "gif". Supported sprite sheet data formats only include "JSON" at this time
*/
PIXI.AssetLoader = function(assetURLs)
{
PIXI.EventTarget.call( this );
/**
* The array of asset URLs that are going to be loaded
* @property assetURLs
* @type Array
*/
this.assetURLs = assetURLs;
this.assets = [];
this.crossorigin = false;
}
/**
Fired when an item has loaded
@event onProgress
**/
/**
Fired when all the assets have loaded
@event onComplete
**/
// constructor
PIXI.AssetLoader.constructor = PIXI.AssetLoader;
/**
* This will begin loading the assets sequentially
*/
PIXI.AssetLoader.prototype.load = function()
{
this.loadCount = this.assetURLs.length;
var imageTypes = ["jpeg", "jpg", "png", "gif"];
var spriteSheetTypes = ["json"];
for (var i=0; i < this.assetURLs.length; i++)
{
var filename = this.assetURLs[i];
var fileType = filename.split('.').pop().toLowerCase();
// what are we loading?
var type = null;
for (var j=0; j < imageTypes.length; j++)
{
if(fileType == imageTypes[j])
{
type = "img";
break;
}
}
if(type != "img")
{
for (var j=0; j < spriteSheetTypes.length; j++)
{
if(fileType == spriteSheetTypes[j])
{
type = "atlas";
break;
}
}
}
if(type == "img")
{
var texture = PIXI.Texture.fromImage(filename, this.crossorigin);
if(!texture.baseTexture.hasLoaded)
{
var scope = this;
texture.baseTexture.addEventListener( 'loaded', function ( event )
{
scope.onAssetLoaded();
});
this.assets.push(texture);
}
else
{
// already loaded!
this.loadCount--;
// if this hits zero here.. then everything was cached!
if(this.loadCount == 0)
{
this.dispatchEvent( { type: 'onComplete', content: this } );
if(this.onComplete)this.onComplete();
}
}
}
else if(type == "atlas")
{
var spriteSheetLoader = new PIXI.SpriteSheetLoader(filename);
spriteSheetLoader.crossorigin = this.crossorigin;
this.assets.push(spriteSheetLoader);
var scope = this;
spriteSheetLoader.addEventListener( 'loaded', function ( event )
{
scope.onAssetLoaded();
});
spriteSheetLoader.load();
}
else
{
// dont know what the file is! :/
//this.loadCount--;
throw new Error(filename + " is an unsupported file type " + this);
}
//this.assets[i].load();
};
}
PIXI.AssetLoader.prototype.onAssetLoaded = function()
{
this.loadCount--;
this.dispatchEvent( { type: 'onProgress', content: this } );
if(this.onProgress)this.onProgress();
if(this.loadCount == 0)
{
this.dispatchEvent( { type: 'onComplete', content: this } );
if(this.onComplete)this.onComplete();
}
}
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="../assets/vendor/prettify/prettify-min.js"></script>
<script>prettyPrint();</script>
<script src="../assets/js/yui-prettify.js"></script>
<script src="../assets/../api.js"></script>
<script src="../assets/js/api-filter.js"></script>
<script src="../assets/js/api-list.js"></script>
<script src="../assets/js/api-search.js"></script>
<script src="../assets/js/apidocs.js"></script>
</body>
</html>