我在Three.js中使用JSONLoader并且我不知道如何在加载模型时处理错误。
例如:
// instantiate a loader
var loader = new THREE.JSONLoader();
// load a resource
loader.load(
// resource URL
'models/animated/monster/monster.js',
// Function when resource is loaded
function ( geometry, materials ) {
var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
scene.add( object );
}
);
如果资源不可用,则加载操作会失败,但永远不会调用回调函数。 因为似乎没有提供错误回调函数并且"尝试捕获"由于异步操作,模式将无法工作,如何在此加载操作失败时检测并执行操作?
答案 0 :(得分:4)
实际上,似乎你可以指定一个onError回调,它似乎没有很好地记录。检查源代码:https://github.com/mrdoob/three.js/blob/master/src/loaders/JSONLoader.js
编辑:
是的。
https://jsfiddle.net/gwpzo5eq/
var loader = new THREE.JSONLoader();
loader.load("this load will fail", onSuccessCallback, onProgressCallback, onErrorCallback);
function onSuccessCallback(){}
function onProgressCallback(){}
function onErrorCallback(e){
alert("JSONLoader failed! because of error " + e.target.status + ", " + e.target.statusText);
}
我不确定文档为何看起来不正确。正确的.load
函数签名是:
JSONLoader.load( url, onLoad, onProgress, onError )
我在THREE.js github页面上打开了一个问题。