Ich habe ein Problem beim Zugriff auf das Objekt außerhalb der Ereignisgrenzen. Wenn ich das Objekt in ein Array setze und dieses Array auschecke, ist das Array ebenfalls leer, aber im Ereignisbereich ist es voll. Ich muss wissen, wie ich auf das Objekt außerhalb des Ereignisbereichs zugreifen könnte.THREE.js OBJ Loader Objekte
for (var i = 0; i < 19; i++){
var loader = new THREE.OBJMTLLoader();
loader.addEventListener('load', function (event) {
var tree = event.content;
myWorld.setWorldTreePosition(multiplier);
tree.position.y = 0;
tree.position.x = myWorld.myTreePosition.position.x;
tree.position.z = myWorld.myTreePosition.position.z;
tree.rotation.x = -(Math.PI/2);
tree.scale.set(10,5,5);
scene.add(tree);
collidableMeshList2.push(tree);
tree.castShadow = true;
//collidableMeshList.push(tree);
multiplier += 500;
console.log(collidableMeshList2); // here it is full of trees.
}
);
loader.load('obj/Palm_Tree.obj', 'obj/Palm_Tree.mtl');
//outside this all becomes empty.
console.log(collidableMeshList2); // here is list is empty but I don't know why.
Sie sollten zumindest die Dateizeile der Schleife außerhalb davon verschieben. Sie können einem Loader viele Listener hinzufügen, aber wenn Sie das Objekt in der Schleife neu definieren, wird es jedes Mal ersetzt. Aktualisieren Sie die Frage damit, damit Sie bessere Antworten erhalten. – recluze