2012-10-15 36 views
1

我的Three.js Json-Loader出現問題。我有一些對象,他們的路徑被保存在一個數組中。 現在我想加載它們並將它們排列在列表中,以便我可以選擇它們。 但是它們的加載順序與加載後的順序不同,因爲它們具有不同的大小,所以小的是第一個,最大的是最後一個。所以加載它們後,我不知道對象的名稱(名稱是路徑)。
我的代碼:
Three.js loading order

for(var j=0;j<21;j++){ 
     var path = objPath[j]; 
     loader.load(path, function(geometry) { save(geometry, path); }); 
    } 


與此代碼的路徑是考慮到節約梅索德但總是最後(objPath [20])路徑,因爲for循環更快比裝載方法。 我能做些什麼,路徑是正確的?

+0

我知道,但我一定要有數組中有一千個對象,並且要花費太長時間。 – Phipps

+0

@ Neil,你是否同時認爲是並行的,在這種情況下異步是幾乎相同的東西?在任何情況下,一個接一個加載是一個懶惰的人的解決方案(誰不想找到真正的問題),並會增加加載時間。 – Tapio

+0

我也想過,但像tapio說我尋找一個真正的解決方案。 – Phipps

回答

0

您被涉及JavaScript關閉規則的常見錯誤所困,請參閱this link。總之,要獲得傳遞給存儲功能的正確路徑,你需要將它包裝成一個輔助函數工廠,是這樣的:(或在上面的鏈接所示)

function saveHelper(path) { 
    return function(geometry) { 
     save(geometry, path); 
    } 
} 

for(var j=0;j<21;j++){ 
    var path = objPath[j]; 
    loader.load(path, saveHelper(path)); 
} 
+0

非常感謝!有用! – Phipps