ImageLoader.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. THREE.ImageLoader = function ( manager ) {
  5. this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
  6. };
  7. THREE.ImageLoader.prototype = {
  8. constructor: THREE.ImageLoader,
  9. load: function ( url, onLoad, onProgress, onError ) {
  10. var scope = this;
  11. var cached = THREE.Cache.get( url );
  12. if ( cached !== undefined ) {
  13. scope.manager.itemStart( url );
  14. if ( onLoad ) {
  15. setTimeout( function () {
  16. onLoad( cached );
  17. scope.manager.itemEnd( url );
  18. }, 0 );
  19. } else {
  20. scope.manager.itemEnd( url );
  21. }
  22. return cached;
  23. }
  24. var image = document.createElement( 'img' );
  25. image.addEventListener( 'load', function ( event ) {
  26. THREE.Cache.add( url, this );
  27. if ( onLoad ) onLoad( this );
  28. scope.manager.itemEnd( url );
  29. }, false );
  30. if ( onProgress !== undefined ) {
  31. image.addEventListener( 'progress', function ( event ) {
  32. onProgress( event );
  33. }, false );
  34. }
  35. image.addEventListener( 'error', function ( event ) {
  36. if ( onError ) onError( event );
  37. scope.manager.itemError( url );
  38. }, false );
  39. if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;
  40. scope.manager.itemStart( url );
  41. image.src = url;
  42. return image;
  43. },
  44. setCrossOrigin: function ( value ) {
  45. this.crossOrigin = value;
  46. }
  47. };
粤ICP备19079148号