最近我一直在使用ThreeJS模型。 我设法实现了一次加载每个需要的.obj的自定义函数,如果有更多的对象使用相同的模型,请克隆它们而不是再次加载它们。三个js动画克隆网格
问题是我需要以特定的方式为每个克隆网格设置动画。
我创建了一个对象数组,其中包含每个需要动画的网格的函数,这些函数将在需要时循环并执行。问题是,只有第一个模型实际上是由于某种原因被动画的。
下面是我用于动画网格的代码。
function loadModel(m){
for(var i = 0; i<objects.length; i++){
if(m.name === objects[i].modelData.model){
mesh = m.mesh.clone();
mesh.position.x = objects[i].positionX * distanceAmplifier;
mesh.position.y = objects[i].positionY * distanceAmplifier;
mesh.position.z = objects[i].positionZ * distanceAmplifier;
mesh.scale.set(1000,1000,1000);
//Adding animation
animations.push(function(){
mesh.rotation.z += 1.0005;
});
scene.add(mesh);
}
}
}
虽然在动漫我这样做:
if(animations.length === objects.length){
animations.map(function(anim){
anim();
});
}
如果我加载不同的OBJ网格,他们每个人的第一个实例被动画,而不是克隆本身。
我希望有人谁有同样的问题可以给我一只手在整理了这一点
为每个克隆创建一个新变量并不是我最好的选择,我使用了闭包来使其工作。我很困惑这个函数可能会在数组中被压入时被正确执行。 无论如何..使用封闭工作像一个魅力。 –