Buckets:
| import { Cache } from './Cache.js'; | |
| import { Loader } from './Loader.js'; | |
| import { createElementNS } from '../utils.js'; | |
| /** | |
| * A loader for loading images. The class loads images with the HTML `Image` API. | |
| * | |
| * ```js | |
| * const loader = new THREE.ImageLoader(); | |
| * const image = await loader.loadAsync( 'image.png' ); | |
| * ``` | |
| * Please note that `ImageLoader` has dropped support for progress | |
| * events in `r84`. For an `ImageLoader` that supports progress events, see | |
| * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}. | |
| * | |
| * @augments Loader | |
| */ | |
| class ImageLoader extends Loader { | |
| /** | |
| * Constructs a new image loader. | |
| * | |
| * @param {LoadingManager} [manager] - The loading manager. | |
| */ | |
| constructor( manager ) { | |
| super( manager ); | |
| } | |
| /** | |
| * Starts loading from the given URL and passes the loaded image | |
| * to the `onLoad()` callback. The method also returns a new `Image` object which can | |
| * directly be used for texture creation. If you do it this way, the texture | |
| * may pop up in your scene once the respective loading process is finished. | |
| * | |
| * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI. | |
| * @param {function(Image)} onLoad - Executed when the loading process has been finished. | |
| * @param {onProgressCallback} onProgress - Unsupported in this loader. | |
| * @param {onErrorCallback} onError - Executed when errors occur. | |
| * @return {Image} The image. | |
| */ | |
| load( url, onLoad, onProgress, onError ) { | |
| if ( this.path !== undefined ) url = this.path + url; | |
| url = this.manager.resolveURL( url ); | |
| const scope = this; | |
| const cached = Cache.get( url ); | |
| if ( cached !== undefined ) { | |
| scope.manager.itemStart( url ); | |
| setTimeout( function () { | |
| if ( onLoad ) onLoad( cached ); | |
| scope.manager.itemEnd( url ); | |
| }, 0 ); | |
| return cached; | |
| } | |
| const image = createElementNS( 'img' ); | |
| function onImageLoad() { | |
| removeEventListeners(); | |
| Cache.add( url, this ); | |
| if ( onLoad ) onLoad( this ); | |
| scope.manager.itemEnd( url ); | |
| } | |
| function onImageError( event ) { | |
| removeEventListeners(); | |
| if ( onError ) onError( event ); | |
| scope.manager.itemError( url ); | |
| scope.manager.itemEnd( url ); | |
| } | |
| function removeEventListeners() { | |
| image.removeEventListener( 'load', onImageLoad, false ); | |
| image.removeEventListener( 'error', onImageError, false ); | |
| } | |
| image.addEventListener( 'load', onImageLoad, false ); | |
| image.addEventListener( 'error', onImageError, false ); | |
| if ( url.slice( 0, 5 ) !== 'data:' ) { | |
| if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; | |
| } | |
| scope.manager.itemStart( url ); | |
| image.src = url; | |
| return image; | |
| } | |
| } | |
| export { ImageLoader }; | |
Xet Storage Details
- Size:
- 2.76 kB
- Xet hash:
- 1403e8953963d1c8aed6ac26f6c0464f1128b23f50d7e080796402346b2796a1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.