sprite_lib.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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;
  20. }
  21. var oImage = new Image();
  22. _oLibSprites[szKey] = _oSpritesToLoad[szKey] = { szPath:szPath, oSprite: oImage ,bLoaded:false};
  23. _iNumSprites++;
  24. };
  25. this.getSprite = function( szKey ){
  26. if (!_oLibSprites.hasOwnProperty(szKey)){
  27. return null;
  28. }else{
  29. return _oLibSprites[szKey].oSprite;
  30. }
  31. };
  32. this._onSpritesLoaded = function(){
  33. _iNumSprites = 0;
  34. _cbTotalCompleted.call(_cbOwner);
  35. };
  36. this._onSpriteLoaded = function(){
  37. _cbCompleted.call(_cbOwner);
  38. if (++_iCntSprites === _iNumSprites) {
  39. this._onSpritesLoaded();
  40. }
  41. };
  42. this.loadSprites = function(){
  43. for (var szKey in _oSpritesToLoad) {
  44. _oSpritesToLoad[szKey].oSprite["oSpriteLibrary"] = this;
  45. _oSpritesToLoad[szKey].oSprite["szKey"] = szKey;
  46. _oSpritesToLoad[szKey].oSprite.onload = function(){
  47. this.oSpriteLibrary.setLoaded(this.szKey);
  48. this.oSpriteLibrary._onSpriteLoaded(this.szKey);
  49. };
  50. _oSpritesToLoad[szKey].oSprite.onerror = function(evt){
  51. var oSpriteToRestore = evt.currentTarget;
  52. setTimeout(function(){
  53. _oSpritesToLoad[oSpriteToRestore.szKey].oSprite.src = _oSpritesToLoad[oSpriteToRestore.szKey].szPath;
  54. },500);
  55. }
  56. _oSpritesToLoad[szKey].oSprite.src = _oSpritesToLoad[szKey].szPath;
  57. }
  58. };
  59. this.setLoaded = function(szKey){
  60. _oLibSprites[szKey].bLoaded = true;
  61. };
  62. this.isLoaded = function(szKey){
  63. return _oLibSprites[szKey].bLoaded;
  64. };
  65. this.getNumSprites=function(){
  66. return _iNumSprites;
  67. };
  68. }