function CSpriteLibrary(){ var _oLibSprites; var _iNumSprites; var _iCntSprites; var _cbCompleted; var _cbTotalCompleted; var _cbOwner; this.init = function( cbCompleted,cbTotalCompleted, cbOwner ){ _iNumSprites = 0; _iCntSprites = 0; _cbCompleted = cbCompleted; _cbTotalCompleted = cbTotalCompleted; _cbOwner = cbOwner; _oLibSprites = {}; }; this.addSprite = function( szKey, szPath ){ if ( _oLibSprites.hasOwnProperty(szKey) ){ return; } _oLibSprites[szKey] = { szPath:szPath, oSprite: new Image() }; _iNumSprites++; }; this.getSprite = function( szKey ){ if (!_oLibSprites.hasOwnProperty(szKey)){ return null; }else{ return _oLibSprites[szKey].oSprite; } }; this._onSpritesLoaded = function(){ _cbTotalCompleted.call(_cbOwner); }; this._onSpriteLoaded = function(){ _cbCompleted.call(_cbOwner); if (++_iCntSprites === _iNumSprites) { this._onSpritesLoaded(); } }; this.loadSprites = function(){ for (var szKey in _oLibSprites) { _oLibSprites[szKey].oSprite["oSpriteLibrary"] = this; _oLibSprites[szKey].oSprite.onload = function(){ this.oSpriteLibrary._onSpriteLoaded(); }; _oLibSprites[szKey].oSprite.src = _oLibSprites[szKey].szPath; } }; this.getNumSprites=function(){ return _iNumSprites; }; }