Preloader class
Class for loading assets (images, sound, json, javascript, css)
by Oliver Caldwell
HTML
<ol id='output'></ol>
JavaScript
/**
* @preserve Class for loading assets (images, sound, video, json, jsonp, javascript, css)
* Provides an x out of y value and a percentage on progress
* And lets you know when everything is done
* Great for preloading all game assets
*
* Requires MooTools and MooTools More (Assets, Reqest.JSONP)
*
* Copyright Oliver Caldwell 2011 (olivercaldwell.co.uk)
*/
var Preloader = new Class({
Implements: [Options, Events],
options: {
images: {},
sounds: {},
videos: {},
json: {},
jsonp: {},
scripts: {},
stylesheets: {}
},
initialize: function(options) {
this.setOptions(options);
},
load: function() {
// Initialise variables
var assetCount = 0,
completedCount = 0,
startTime = new Date().getTime(),
loaded = {
images: {},
sounds: {},
videos: {},
json: {},
jsonp: {},
scripts: {},
stylesheets: {}
},
handleProgress = function() {
completedCount += 1;
this.fireEvent('progress', [completedCount, assetCount, 100 / assetCount * completedCount]);
if(completedCount === assetCount) {
this.fireEvent('complete', [loaded, assetCount, new Date().getTime() - startTime]);
}
}.bind(this);
// Fire the start event
this.fireEvent('start', [assetCount]);
// Count all items
Object.each(this.options, function(assetObject) {
assetCount += Object.getLength(assetObject);
});
// Load images
Object.each(this.options.images, function(path, name) {
loaded.images[name] = Asset.image(path, {
onLoad: handleProgress
});
});
// Load sounds
...