В настоящее время я загружаю кучу элементов модели и добавляю их в группу. Затем я хочу иметь возможность перемещать группу как единое целое после их загрузки.
Моя проблема в том, как я могу запустить код после того, как я убедился, что все мои модели загружены? Я не понимаю, как использовать функцию .onload с colladaLoader и его функциями обратного вызова. Кроме того, это плохая идея использовать самовыполняющуюся функцию, как у меня здесь? Я не знаю, как еще просмотреть список и загрузить все модели.
Мой код ниже. Я пытался использовать хак, используя счетчик «завершено», но он не работает все время. Спасибо!
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 объект, он не загружает этот объект.