Three.js Loader.load()中的错误处理

时间:2016-04-26 19:55:36

标签: javascript three.js

我在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 );
    }
);

如果资源不可用,则加载操作会失败,但永远不会调用回调函数。 因为似乎没有提供错误回调函数并且"尝试捕获"由于异步操作,模式将无法工作,如何在此加载操作失败时检测并执行操作?

1 个答案:

答案 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页面上打开了一个问题。