最近我一直在使用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網格,他們每個人的第一個實例被動畫,而不是克隆本身。
我希望有人誰有同樣的問題可以給我一隻手在整理了這一點
爲每個克隆創建一個新變量並不是我最好的選擇,我使用了閉包來使其工作。我很困惑這個函數可能會在數組中被壓入時被正確執行。 無論如何..使用封閉工作像一個魅力。 –