1
0

LoadingManager.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. function LoadingManager( onLoad, onProgress, onError ) {
  5. var scope = this;
  6. var isLoading = false;
  7. var itemsLoaded = 0;
  8. var itemsTotal = 0;
  9. var urlModifier = undefined;
  10. // Refer to #5689 for the reason why we don't set .onStart
  11. // in the constructor
  12. this.onStart = undefined;
  13. this.onLoad = onLoad;
  14. this.onProgress = onProgress;
  15. this.onError = onError;
  16. this.itemStart = function ( url ) {
  17. itemsTotal ++;
  18. if ( isLoading === false ) {
  19. if ( scope.onStart !== undefined ) {
  20. scope.onStart( url, itemsLoaded, itemsTotal );
  21. }
  22. }
  23. isLoading = true;
  24. };
  25. this.itemEnd = function ( url ) {
  26. itemsLoaded ++;
  27. if ( scope.onProgress !== undefined ) {
  28. scope.onProgress( url, itemsLoaded, itemsTotal );
  29. }
  30. if ( itemsLoaded === itemsTotal ) {
  31. isLoading = false;
  32. if ( scope.onLoad !== undefined ) {
  33. scope.onLoad();
  34. }
  35. }
  36. };
  37. this.itemError = function ( url ) {
  38. if ( scope.onError !== undefined ) {
  39. scope.onError( url );
  40. }
  41. };
  42. this.resolveURL = function ( url ) {
  43. if ( urlModifier ) {
  44. return urlModifier( url );
  45. }
  46. return url;
  47. };
  48. this.setURLModifier = function ( transform ) {
  49. urlModifier = transform;
  50. return this;
  51. };
  52. }
  53. var DefaultLoadingManager = new LoadingManager();
  54. export { DefaultLoadingManager, LoadingManager };
粤ICP备19079148号