我在使用LoadingManager时遇到一些问题,我正在尝试使用这些问题来预加载模型和纹理。
manager = new THREE.LoadingManager();
manager.onProgress = function ( item, loaded, total ) {
console.log("loaded: " + loaded + " total: " + total);
};
init();
function init()
{
// instantiate a loader
var loader = new THREE.OBJLoader(manager);
var textureLoader = new THREE.TextureLoader(manager);
// load first model
loader.load('model1.obj', function (object)
{
var texture = textureLoader.load('texture1.png');
});
// load second model
loader.load('model2.obj', function (object)
{
var texture = textureLoader.load('texture2.png');
});
}
控制台输出为:
OBJLoader: 80.058837890625ms
loaded: 1 total: 3
loaded: 2 total: 3
OBJLoader.js:787 OBJLoader: 5.671875ms
loaded: 3 total: 4
loaded: 4 total: 4
在加载第一个模型和纹理后,为什么只有两个(model1.obj和texture1.png),经理会认为总共要加载3个项目?此外,要装载的物品总数从3变为4。是否可以对此进行更正,以便显示正确的总数4?
答案 0 :(得分:1)
在加载第一个模型和纹理后,为什么只有两个(model1.obj和texture1.png),经理会认为总共要加载3个项目?
因为该应用程序将首先开始同时加载两个OBJ
文件,然后再加载纹理。因此顺序不是model1.obj
=> texture1.png
=> model2.obj
=> texture2.png
。 model1.obj
的末尾将通知加载管理器model2.obj
和init()
。建议您在LoadingManager.itemStart()
和LoadingManager.itemEnd()
中设置断点,以更好地了解内部加载工作流程。
three.js R104