浏览代码

ObjectLoader: More code clean up.

Mr.doob 10 年之前
父节点
当前提交
07343214c1
共有 1 个文件被更改,包括 18 次插入18 次删除
  1. 18 18
      src/loaders/ObjectLoader.js

+ 18 - 18
src/loaders/ObjectLoader.js

@@ -51,10 +51,10 @@ THREE.ObjectLoader.prototype = {
 
 		this.manager.itemStart( json.object.uuid );
 
-		var manager = new THREE.LoadingManager( function () {
+		geometries = this.parseGeometries( json.geometries );
+		images = this.parseImages( json.images, function () {
 
 			textures  = scope.parseTextures( json.textures, images );
-
 			materials = scope.parseMaterials( json.materials, textures );
 
 			onLoad( scope.parseObject( json.object, geometries, materials ) );
@@ -64,8 +64,6 @@ THREE.ObjectLoader.prototype = {
 
 		} );
 
-		images = this.parseImages( json.images, manager );
-
 	},
 
 	parseGeometries: function ( json ) {
@@ -247,41 +245,43 @@ THREE.ObjectLoader.prototype = {
 
 	},
 
-	parseImages: function ( json, manager ) {
+	parseImages: function ( json, onLoad ) {
 
 		var scope = this;
 		var images = {};
 
-		if ( json !== undefined ) {
+		if ( json !== undefined && json.length > 0 ) {
+
+			var manager = new THREE.LoadingManager( onLoad );
 
 			var loader = new THREE.ImageLoader( manager );
 			loader.setCrossOrigin( this.crossOrigin );
 
-			if ( json.length === 0 ) {
+			var loadImage = function ( data ) {
 
-				manager.onLoad();
+				var url = scope.texturePath + data.url;
 
-			}
+				scope.manager.itemStart( url );
 
-			for ( var i = 0, l = json.length; i < l; i ++ ) {
+				loader.load( url, function ( image ) {
 
-				var data = json[ i ];
-				var url  = scope.texturePath + data.url;
+					scope.manager.itemEnd( url );
 
-				scope.manager.itemStart( url );
-				loader.load( url, function ( uuid, url, image ) {
+					images[ data.uuid ] = image;
 
-					scope.manager.itemEnd( url );
+				} );
+
+			};
 
-					images[ uuid ] = image;
+			for ( var i = 0, l = json.length; i < l; i ++ ) {
 
-				}.bind( null, data.uuid, url ) );
+				loadImage( json[ i ] );
 
 			}
 
 		} else {
 
-			manager.onLoad();
+			onLoad();
 
 		}