2016-04-26 25 views
1

私はThree.jsでJSONLoaderを使用していますが、モデルを読み込むときにエラーを処理する方法がわかりません。例えばThree.jsでのエラー処理Loader.load()

// 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); 
    } 
); 

リソースが利用できない場合は、ロード操作は失敗しますが、コールバック関数が呼び出されることはありません。 エラーコールバック機能が提供されず、非同期操作のために "try catch"パターンが機能しないように見えるので、このロード操作が失敗したときにどのようにアクションを検出して実行できますか?

答えて

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のページ上の問題を開いてきました。