XHRLoader.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. THREE.XHRLoader = function ( manager ) {
  5. this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
  6. };
  7. THREE.XHRLoader.prototype = {
  8. constructor: THREE.XHRLoader,
  9. load: function ( url, onLoad, onProgress, onError ) {
  10. var scope = this;
  11. var cached = THREE.Cache.get( url );
  12. if ( cached !== undefined ) {
  13. if ( onLoad ) {
  14. setTimeout( function () {
  15. onLoad( cached );
  16. }, 0 );
  17. }
  18. return cached;
  19. }
  20. var request = new XMLHttpRequest();
  21. request.open( 'GET', url, true );
  22. request.addEventListener( 'load', function ( event ) {
  23. THREE.Cache.add( url, this.response );
  24. if ( onLoad ) onLoad( this.response );
  25. scope.manager.itemEnd( url );
  26. }, false );
  27. if ( onProgress !== undefined ) {
  28. request.addEventListener( 'progress', function ( event ) {
  29. onProgress( event );
  30. }, false );
  31. }
  32. if ( onError !== undefined ) {
  33. request.addEventListener( 'error', function ( event ) {
  34. onError( event );
  35. }, false );
  36. }
  37. if ( this.crossOrigin !== undefined ) request.crossOrigin = this.crossOrigin;
  38. if ( this.responseType !== undefined ) request.responseType = this.responseType;
  39. if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;
  40. request.send( null );
  41. scope.manager.itemStart( url );
  42. return request;
  43. },
  44. setResponseType: function ( value ) {
  45. this.responseType = value;
  46. },
  47. setCrossOrigin: function ( value ) {
  48. this.crossOrigin = value;
  49. },
  50. setWithCredentials: function ( value ) {
  51. this.withCredentials = value;
  52. }
  53. };
粤ICP备19079148号