我如何在ThreeJS中访问这些变量?

时间:2015-02-15 06:32:31

标签: javascript function geometry

我已经开始使用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;
  }

1 个答案:

答案 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);