2013-05-08 121 views
0

正如我處理繁重的車型我想在加載JSON顯示dynamicaly加載的百分比,所以我做了與loadAjaxJSON method一個粗略的測試...three.js所:JSONLoader + loadAjaxJSON

下裝載的回報加載期間的百分比,但從未達到回調函數。

這是由於缺少聲明,錯誤的上下文參數,到別的東西?我找不到有關這方面的文件。

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)] 

回答

4

有時候它的速度更快也窺視來源,而不是尋找文檔。以下是JSONLoader的代碼:https://github.com/mrdoob/three.js/blob/master/src/loaders/JSONLoader.js。 正如你所看到的上下文應該包含兩種方法: parse和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());} 
     ) 
+0

那麼我承認我還沒有解碼原型的水平..但這是一個很好的教訓。非常感謝,它的工作原理。 – jeum 2013-05-08 11:11:05