2013-05-07 43 views
1

我正在使用BinaryLoader加載相當大的3D模型(高達6MB),並且我想顯示進度信息。如何使用showProgress標誌在BinaryLoader中顯示進度?

使用loader.showStatus已經是第一步了(現在我的應用程序在模型加載時顯示「加載」),但我想顯示模型的哪個百分比已經加載。

閱讀BinaryLoader代碼中,我找到了「showProgress」標誌,但如果我把它設置爲true,我得到多個錯誤像這樣的:

未捕獲的錯誤:InvalidStateError:DOM異常11 xhr.onreadystatechange

在線路BinaryLoader.js:99,其對應於:

callbackProgress({總:長度,裝載:xhr.responseText.length});

我也試過配置loader.onLoadProgress,但我無法弄清楚如何做到這一點...

在此先感謝!

+0

[webgl_loader_scene.html](http://threejs.org/examples/webgl_loader_scene.html)中有一個工作進度條。 – WestLangley 2013-05-07 12:49:56

+0

謝謝! ...這是相當多的代碼只是添加一個進度條。我會試着看看我能否帶上更簡約的東西 – roberto 2013-05-07 13:48:25

+0

@roberto你能想出一些比他們給出的更小的東西嗎? – 2015-02-23 15:59:08

回答

2

3年後,我遇到了和你一樣的問題。這裏是我的解決方案:

var onLoadComplete= function (geometry) { 
    model = new THREE.Mesh(geometry, material); 
    scene.add(model); 
    //etc 
}; 

var onLoadProgress = function (e) { 
    var percentage = Math.round((e.loaded/e.total * 100)); 
    jQuery('#some-loader-div').html('Loading ' + percentage + '%') 
}; 

loader.load(file_url, onLoadComplete, onLoadProgress); 

參考:http://definitelytyped.org/docs/threejs--three/classes/three.jsonloader.html#onloadprogress

希望這可以幫助別人!

相關問題