ImageLoader.js 1.3 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 ) {

M
makc 已提交
23 24
			scope.manager.itemStart( url );

D
dubejf 已提交
25 26 27 28 29 30
			if ( onLoad ) {

				setTimeout( function () {

					onLoad( cached );

M
makc 已提交
31 32
					scope.manager.itemEnd( url );

D
dubejf 已提交
33 34
				}, 0 );

M
makc 已提交
35 36 37 38
			} else {

				scope.manager.itemEnd( url );

D
dubejf 已提交
39 40
			}

41
			return cached;
42 43 44

		}

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

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

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

M
Mr.doob 已提交
51
			if ( onLoad ) onLoad( this );
52

M
Mr.doob 已提交
53
			scope.manager.itemEnd( url );
54

M
Mr.doob 已提交
55
		}, false );
56 57 58 59 60 61 62 63 64 65 66

		if ( onProgress !== undefined ) {

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

				onProgress( event );

			}, false );

		}

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

69
			if ( onError ) onError( event );
70

71
			scope.manager.itemError( url );
72

73
		}, false );
74 75 76

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

M
Mr.doob 已提交
77 78
		scope.manager.itemStart( url );

79 80
		image.src = url;

81 82
		return image;

M
Mr.doob 已提交
83 84 85 86 87
	},

	setCrossOrigin: function ( value ) {

		this.crossOrigin = value;
M
Mr.doob 已提交
88 89

	}
M
Mr.doob 已提交
90

B
brason 已提交
91
};