sprite_lib.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. function CSpriteLibrary(){
  6. var _oLibSprites;
  7. var _iNumSprites;
  8. var _iCntSprites;
  9. var _cbCompleted;
  10. var _cbTotalCompleted;
  11. var _cbOwner;
  12. this.init = function( cbCompleted,cbTotalCompleted, cbOwner ){
  13. _iNumSprites = 0;
  14. _iCntSprites = 0;
  15. _cbCompleted = cbCompleted;
  16. _cbTotalCompleted = cbTotalCompleted;
  17. _cbOwner = cbOwner;
  18. _oLibSprites = {};
  19. };
  20. this.addSprite = function( szKey, szPath ){
  21. if ( _oLibSprites.hasOwnProperty(szKey) ){
  22. return;
  23. }
  24. _oLibSprites[szKey] = { szPath:szPath, oSprite: new Image() };
  25. _iNumSprites++;
  26. };
  27. this.getSprite = function( szKey ){
  28. if (!_oLibSprites.hasOwnProperty(szKey)){
  29. return null;
  30. }else{
  31. return _oLibSprites[szKey].oSprite;
  32. }
  33. };
  34. this._onSpritesLoaded = function(){
  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 _oLibSprites) {
  45. _oLibSprites[szKey].oSprite["oSpriteLibrary"] = this;
  46. _oLibSprites[szKey].oSprite.onload = function(){
  47. this.oSpriteLibrary._onSpriteLoaded();
  48. };
  49. _oLibSprites[szKey].oSprite.onerror = function(evt){
  50. var oSpriteToRestore = evt.currentTarget;
  51. setTimeout(function(){
  52. _oLibSprites[oSpriteToRestore.szKey].oSprite.src = _oLibSprites[oSpriteToRestore.szKey].szPath;
  53. },500);
  54. };
  55. _oLibSprites[szKey].oSprite.src = _oLibSprites[szKey].szPath;
  56. }
  57. };
  58. this.getNumSprites=function(){
  59. return _iNumSprites;
  60. };
  61. this.loadSpriteGroup=function(aGroup, cbOwner, cbCompleted, oParam){
  62. for(var i=0; i<aGroup.length; i++){
  63. var szElementKey = aGroup[i].key;
  64. var szElementPath = aGroup[i].path;
  65. _oLibSprites[szElementKey] = { szPath:szElementPath, oSprite: new Image() };
  66. _iNumSprites++;
  67. };
  68. this._loadInStreamingSprite(aGroup, cbOwner, cbCompleted, oParam);
  69. };
  70. this._loadInStreamingSprite = function(aGroup, cbOwner, cbCompleted, oParam){
  71. var oElement = aGroup.splice(0,1)[0];
  72. var szKey = oElement.key;
  73. _oLibSprites[szKey].oSprite["oSpriteLibrary"] = this;
  74. _oLibSprites[szKey].oSprite.onload = function(){
  75. this.oSpriteLibrary._onElementOfSpriteGroupLoaded(aGroup, cbOwner, cbCompleted, oParam);
  76. };
  77. _oLibSprites[szKey].oSprite.onerror = function(evt){
  78. setTimeout(function(){
  79. _oLibSprites[szKey].oSprite.src = _oLibSprites[szKey].szPath;
  80. },500);
  81. };
  82. _oLibSprites[szKey].oSprite.src = _oLibSprites[szKey].szPath;
  83. };
  84. this._onElementOfSpriteGroupLoaded = function(aGroup, cbOwner, cbCompleted, oParam){
  85. if(aGroup.length === 0){
  86. if(cbCompleted){
  87. cbCompleted.call(cbOwner, oParam);
  88. }
  89. } else {
  90. s_oSpriteLibrary._loadInStreamingSprite(aGroup, cbOwner, cbCompleted, oParam);
  91. /////SIMULATE SLOW LOADING
  92. /*
  93. setTimeout(function(){
  94. s_oSpriteLibrary._loadInStreamingSprite(aGroup, cbOwner, cbCompleted, oParam);
  95. },30);
  96. */
  97. }
  98. };
  99. }