当我处理重型模型时,我试图在加载JSON时动态显示加载的百分比,所以我用loadAjaxJSON method进行了粗略的测试......
以下加载返回加载期间的百分比,但永远不会到达回调函数。
是由于缺少声明,错误的上下文参数,还是其他原因?我找不到相关的文档。
var loader = new THREE.JSONLoader( true );
loader.loadAjaxJSON(
document, // < context ??
'try.js',
function ( geometry, materials ) { CreateScene( geometry, materials ); },
false, // < texturePath
function( progress, result ) { console.log((progress.loaded / progress.total * 100).toFixed());}
)
控制台:
7 13 20 .. 100
TypeError: a.parse is not a function [three.min.js (ligne 204)]
答案 0 :(得分:4)
有时它会更快地查看源代码而不是查找文档。以下是JSONLoader的代码:https://github.com/mrdoob/three.js/blob/master/src/loaders/JSONLoader.js。 如您所见,上下文应包含两种方法: 解析和onLoadComplete。基本上你只需要将loader作为上下文发送,查看loadAjaxJSON的快捷方式 - 方法加载。 关于texturePath,在方法加载中你可以看到它应该是什么样子:
texturePath = texturePath && ( typeof texturePath === "string" ) ? texturePath : this.extractUrlBase( url );
如果你看得更深,你会发现extractUrlBase会返回'./'所以在你的情况下你的代码应该是这样的:
var loader = new THREE.JSONLoader( true );
loader.loadAjaxJSON(
loader, // context
'try.js',
function ( geometry, materials ) { CreateScene( geometry, materials ); },
'./', // texturePath or loader.extractUrlBase('try.js'),
function( progress, result ) { console.log((progress.loaded / progress.total * 100).toFixed());}
)