sprite_lib.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. function CSpriteLibrary(){
  2. var _oLibSprites = {};
  3. var _oSpritesToLoad;
  4. var _iNumSprites;
  5. var _iCntSprites;
  6. var _cbCompleted;
  7. var _cbTotalCompleted;
  8. var _cbOwner;
  9. this.init = function( cbCompleted,cbTotalCompleted, cbOwner ){
  10. _oSpritesToLoad = {};
  11. _iNumSprites = 0;
  12. _iCntSprites = 0;
  13. _cbCompleted = cbCompleted;
  14. _cbTotalCompleted = cbTotalCompleted;
  15. _cbOwner = cbOwner;
  16. };
  17. this.addSprite = function( szKey, szPath ){
  18. if ( _oLibSprites.hasOwnProperty(szKey) ){
  19. return false;
  20. }
  21. var oImage = new Image();
  22. _oLibSprites[szKey] = _oSpritesToLoad[szKey] = { szPath:szPath, oSprite: oImage ,bLoaded:false};
  23. _iNumSprites++;
  24. return true;
  25. };
  26. this.getSprite = function( szKey ){
  27. if (!_oLibSprites.hasOwnProperty(szKey)){
  28. return null;
  29. }else{
  30. return _oLibSprites[szKey].oSprite;
  31. }
  32. };
  33. this._onSpritesLoaded = function(){
  34. _iNumSprites = 0;
  35. _cbTotalCompleted.call(_cbOwner);
  36. };
  37. this._onSpriteLoaded = function(){
  38. _cbCompleted.call(_cbOwner);
  39. if (++_iCntSprites === _iNumSprites) {
  40. this._onSpritesLoaded();
  41. }
  42. };
  43. this.loadSprites = function(){
  44. for (var szKey in _oSpritesToLoad) {
  45. _oSpritesToLoad[szKey].oSprite["oSpriteLibrary"] = this;
  46. _oSpritesToLoad[szKey].oSprite["szKey"] = szKey;
  47. _oSpritesToLoad[szKey].oSprite.onload = function(){
  48. this.oSpriteLibrary.setLoaded(this.szKey);
  49. this.oSpriteLibrary._onSpriteLoaded(this.szKey);
  50. };
  51. _oSpritesToLoad[szKey].oSprite.onerror = function(evt){
  52. var oSpriteToRestore = evt.currentTarget;
  53. setTimeout(function(){
  54. _oSpritesToLoad[oSpriteToRestore.szKey].oSprite.src = _oSpritesToLoad[oSpriteToRestore.szKey].szPath;
  55. },500);
  56. };
  57. _oSpritesToLoad[szKey].oSprite.src = _oSpritesToLoad[szKey].szPath;
  58. }
  59. };
  60. this.setLoaded = function(szKey){
  61. _oLibSprites[szKey].bLoaded = true;
  62. };
  63. this.isLoaded = function(szKey){
  64. return _oLibSprites[szKey].bLoaded;
  65. };
  66. this.getNumSprites=function(){
  67. return _iNumSprites;
  68. };
  69. }