我已经开始使用javascript和ThreeJS来完成一个项目。它涉及创建一堆球体。为此,我使用for循环和一个创建球体的函数。但是,我不明白的一件事是如何在函数/循环中创建变量后访问变量。在函数内部正在创建一个名为sphere的变量,但是如何访问该特定的球体变量
是否可以使用函数输入作为变量名? 像这样:function myFunction(name) {var name = 3} 这样当我将numberThree输入函数时,它会创建一个名为numberThree?
的变量for(i=1; i< 5; i++)
{
var sphere = new THREE.Mesh(new THREE.SphereGeometry(10, 100, 100), new THREE.MeshNormalMaterial());
sphere.overdraw = true;
scene.add(sphere);
sphere.position.x = i * 20;
}
function drawSphere(size, x, y)
{
var sphere = new THREE.Mesh(new THREE.SphereGeometry(size, 100, 100), new THREE.MeshNormalMaterial());
sphere.overdraw = true;
scene.add(sphere);
sphere.position.x = x;
sphere.position.y = y;
}
答案 0 :(得分:1)
您的代码似乎正在创建一个新的球体,然后每次都将它添加到场景中。为了能够单独访问它们,您必须首先使球体成为全局数组,然后将它们添加到场景中,如下所示:
var sphere = [];
for(i=0; i< 4; i++) // should count from zero
{
sphere[i] = new THREE.Mesh(new THREE.SphereGeometry(10, 100, 100),new THREE.MeshNormalMaterial());
sphere[i].overdraw = true;
scene.add(sphere[i]);
sphere[i].position.x = i * 20;
}
然后你可以通过专门调用来访问每个球体。例如,您可以更改第三个球体的颜色:
sphere[2].material.color.setHex(0xFFFFF);