【发布时间】:2014-12-09 11:38:42
【问题描述】:
我目前正在加载模型的一堆元素并将它们添加到一个组中。然后,我希望能够在加载后将组作为一个整体移动。
我的问题是,一旦我确保所有模型都已加载,我该如何运行代码? 我不明白如何将 .onload 函数与 colladaLoader 及其回调函数一起使用。另外,使用像我在这里的自我执行功能是一个坏主意吗?我不确定如何通过列表并加载所有模型。
我的代码如下。我曾尝试通过使用“完整”计数器来使用 hack,但它并不总是有效。谢谢!
for ( var i=0; i<object.asset.length; i++ ) {
loader = new THREE.ColladaLoader();
asset = furniture.asset[i];
(function(asset) {
loader.load(asset["path"], function(collada, materials) {
//this function scales & positions model
var mesh = daeAttributes(collada, object, asset, newMaterial);
var scene = get_scene();
group.add( mesh );
complete++;
//when all assets have been loaded, add the group to the scene
if (complete===object.asset.length-1) {
//want to move the group once all the models are loaded
group = moveModel(group, object);
scene.add( group );
render();
};
});
})(asset);
更新
因此,如果我有一个列表 >1,要加载的唯一对象,它就可以工作。如果只有 1 个对象,则不会加载该对象。
【问题讨论】:
标签: javascript three.js loading collada