【发布时间】:2018-11-12 10:13:13
【问题描述】:
我正在尝试用 Three.js 创建一个栅栏生成器函数,但我的函数只返回最后一个栅栏,我不知道为什么...
function generateFence(nb){
var i;
var value = -5;
var loadingManager;
for(i = 0; i < nb ; i++) {
var arrayFence = [];
loadingManager = new THREE.LoadingManager( function () {
scene.add( arrayFence[i] );
});
var loader = new THREE.ColladaLoader( loadingManager );
loader.load( 'fence/model.dae', function ( collada ) {
arrayFence[i] = collada.scene;
arrayFence[i].position.x = value;
arrayFence[i].position.z = -5;
});
value = value + 3;
}
}
generateFence(3);
【问题讨论】:
-
您要在每个循环中创建一个新围栏?
-
你在哪里记录结果?由于所有这些操作都是异步的,因此您的函数将不会返回任何栅栏。此外,如果您正在观察输出,由于异步 all 您的
value属性将是最后一个值道具。将value = value + 3移动到您的回调内部,以便为添加的每个围栏增加它。
标签: javascript arrays function loops three.js