我正在使用 THREE.js 中的循环加载多个汽车模型,但问题是有时它会加载所有对象,有时却不会。例如,如果循环3次,有时会加载2个对象,有时会加载1个对象,有时会加载所有三个对象。我不知道为什么?我搜索了很多资料,但找不到任何有用的东西。以下是代码:
for (var k = 1; k <= myWorld.noOfEnemies(); k++) {
myWorld.setWorldEnemyCar(k);
loader2.load('obj/us/us_police_car.dae', function colladaReady(collada) {
object3 = collada.scene;
object3.scale.x = object3.scale.y = object3.scale.z = 2;
object3.updateMatrix();
object3.position.x = myWorld.enemyCar.position.x;
object3.position.y = myWorld.enemyCar.position.y;
object3.position.z = myWorld.enemyCar.position.z;
object3.rotation.x = -(Math.PI / 2);
object3.rotation.z = (Math.PI / 2);
enemyModels.push(object3);
//localObject.rotation.z = -(Math.PI / 2);
//collidableMeshList3 = localObject;
//console.log(collidableMeshList3);
// init();
// animate();
});
}
在这之后还有一个加载器,其中我有init()
和animate()
函数。
loader2.load('obj/us/us_police_car.dae', function colladaReady(collada) {
localObject = collada.scene;
localObject.scale.x = localObject.scale.y = localObject.scale.z = 2;
localObject.updateMatrix();
localObject.position.x = 0;
localObject.position.y = 0;
localObject.position.z = 0;
localObject.rotation.x = -(Math.PI / 2);
localObject.rotation.z = (Math.PI / 2);
//localObject.rotation.z = -(Math.PI / 2);
//collidableMeshList3 = localObject;
//console.log(collidableMeshList3);
//scene.add(localObject);
init();
animate();
});
这个可以正常工作,但是我无法弄清楚上面那个的问题。