ImageLoader.js 1.2 KB
Newer Older
M
Mr.doob 已提交
1 2 3 4
/**
 * @author mrdoob / http://mrdoob.com/
 */

M
Mr.doob 已提交
5
THREE.ImageLoader = function ( manager ) {
M
Mr.doob 已提交
6

M
Mr.doob 已提交
7
	this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
M
Mr.doob 已提交
8

9 10
};

M
Mr.doob 已提交
11
THREE.ImageLoader.prototype = {
M
Mr.doob 已提交
12

M
Mr.doob 已提交
13
	constructor: THREE.ImageLoader,
14

15
	load: function ( url, onLoad, onProgress, onError ) {
16

17 18
		var scope = this;

M
Mr.doob 已提交
19
		var cached = THREE.Cache.get( url );
20 21 22

		if ( cached !== undefined ) {

23 24
			if ( onLoad ) onLoad( cached );
			return cached;
25 26 27

		}

28
		var image = document.createElement( 'img' );
M
Mr.doob 已提交
29

M
Mr.doob 已提交
30
		image.addEventListener( 'load', function ( event ) {
31

M
Mr.doob 已提交
32
			THREE.Cache.add( url, this );
M
Mr.doob 已提交
33

M
Mr.doob 已提交
34
			if ( onLoad ) onLoad( this );
35

M
Mr.doob 已提交
36
			scope.manager.itemEnd( url );
37

M
Mr.doob 已提交
38
		}, false );
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

		if ( onProgress !== undefined ) {

			image.addEventListener( 'progress', function ( event ) {

				onProgress( event );

			}, false );

		}

		if ( onError !== undefined ) {

			image.addEventListener( 'error', function ( event ) {

				onError( event );

			}, false );

		}

		if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;

		image.src = url;

M
Mr.doob 已提交
64 65
		scope.manager.itemStart( url );

66 67
		return image;

M
Mr.doob 已提交
68 69 70 71 72
	},

	setCrossOrigin: function ( value ) {

		this.crossOrigin = value;
M
Mr.doob 已提交
73 74

	}
M
Mr.doob 已提交
75

B
brason 已提交
76
};