[英]Three.js object to array
I'm just beginner with Three.js.我只是 Three.js 的初学者。 I would like to push my 'palmtree' object to an array.我想将我的“palmtree”对象推送到一个数组。 My code should be fine, I think..我的代码应该没问题,我想..
I have my var objects = [];
我有我的var objects = [];
. .
And inside the init:在 init 中:
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load("objects/palmtree.mtl", function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.load("objects/palmtree.obj", function(palmtree) {
palmtree.position.x = 205.12577753354344;
palmtree.position.y = 2;
palmtree.position.z = -600.0613083252872;
palmtree.scale.x = 64;
palmtree.scale.y = 64;
palmtree.scale.z = 64;
scene.add(palmtree);
objects.push( palmtree );
});
});
The result looks fine.结果看起来不错。 I have my palmtree in the scene.我在场景中有我的棕榈树。 But when I try objects.length
I get 0.. I don't understand what is wrong.但是当我尝试objects.length
我得到 0.. 我不明白出了什么问题。
How can I push my palmtree to the objects array?如何将我的 palmtree 推送到对象数组? Many thanks.非常感谢。
I think your are missing something fundamental here.我认为你在这里缺少一些基本的东西。 Object loading is an asynchronous process so if you call objects.length
somewhere outside your callback method it will most likely return 0
for the array length since your palm tree has not been loaded yet.对象加载是一个异步过程,因此如果您在回调方法之外的某处调用objects.length
它很可能会为数组长度返回0
,因为您的棕榈树尚未加载。
But try once to check objects.length
in the callback for example like this:但是尝试一次检查回调中的objects.length
例如像这样:
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load("objects/palmtree.mtl", function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.load("objects/palmtree.obj", function(palmtree) {
palmtree.position.x = 205.12577753354344;
palmtree.position.y = 2;
palmtree.position.z = -600.0613083252872;
palmtree.scale.x = 64;
palmtree.scale.y = 64;
palmtree.scale.z = 64;
scene.add(palmtree);
objects.push( palmtree );
console.log(objects.length); // <-- will output new length
});
});
In this case it will output 1
.在这种情况下,它将输出1
。
So the array length will only return 1
after your loading process has finished and the callback has been executed.因此,在加载过程完成并执行回调后,数组长度只会返回1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.