ResourceManager.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // ResourceManager.js
  2. // For Resource Loading and management
  3. // FZ, Copyright (c) 2010 Zlongames
  4. (function()
  5. {
  6. FZ.ResourceManager = {
  7. __ResourceCount:0,
  8. __ResourceLoaded:0,
  9. __GeneralCallback:null,
  10. __GeneralCallbackObj:null,
  11. ResourceLib:{},
  12. isResourceLoaded:function(){ return this.__ResourceCount === this.__ResourceLoaded;},
  13. // resourceDesc:
  14. // {Name: xxxx, Type: xxxx, URL: xxxx, callback: callback function}
  15. //
  16. addResource:function (resourceDesc)
  17. {
  18. if (this.ResourceFactory.hasOwnProperty(resourceDesc.Type))
  19. {
  20. this.__ResourceCount ++;
  21. var _resource =
  22. {
  23. Resource : null,
  24. Loaded: false
  25. };
  26. this.ResourceLib[resourceDesc.Name] = _resource;
  27. FZ._trace("Add/load resource[" + resourceDesc.Name + "] : "+ resourceDesc.URL);
  28. var _resourceLoader = new this.ResourceFactory[resourceDesc.Type](resourceDesc.URL, _resource);
  29. _resourceLoader.setCallback(function()
  30. {
  31. _resource.Loaded = true;
  32. FZ.ResourceManager.__ResourceLoaded++;
  33. if (resourceDesc.callback) resourceDesc.callback(_resource.Resource);
  34. if (FZ.ResourceManager.__GeneralCallback) FZ.ResourceManager.__GeneralCallback.call();
  35. });
  36. _resourceLoader.load();
  37. }
  38. else
  39. Throw("Error: Do not suppport Resourcetype:"+ resourceDesc.Type);
  40. },
  41. setCallback:function(callbackFunc)
  42. {
  43. this.__GeneralCallback = callbackFunc;
  44. },
  45. getLoadingRatio:function()
  46. {
  47. if (this.__ResourceCount === 0) return 1;
  48. return this.__ResourceLoaded/this.__ResourceCount;
  49. },
  50. ResourceFactory:{},
  51. registerResourceType:function (Typename, ResourceClass)
  52. {
  53. this.ResourceFactory[Typename] = ResourceClass;
  54. }
  55. };
  56. // General Resource
  57. FZ.Class_Resource=
  58. {
  59. callback:function(){},
  60. init:function(URL, target) { this.URL = URL; this.target = target;},
  61. setCallback:function(callback) {this.callback = callback;}
  62. };
  63. })();