如何在three.js中按名称或id访问场景,没有scene.childs只是场景

时间:2017-02-07 03:18:57

标签: three.js

我试试这个three.js how to get scene by id(name)

我收到此错误

  

未捕获的TypeError:THREE.getObjectByName不是函数

为什么我无法通过名称或ID来访问场景????

代码就是那个

// setup scenes
var scene-1 = new THREE.Scene();
scene-1.add('cube_red');

var scene-2 = new THREE.Scene();
scene-2.add('cube_green');

// get scenes by name
var sceneObj = THREE.Object3D.getObjectByName("scene-1");
console.log(sceneObj.userData.someProp);

// or 

selectedScene = THREE.Object3D.getObjectByName("scene-1");

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

变量名中不能包含-1或-2。

答案 1 :(得分:0)

您发布的代码无效Javascript。但这会给你带来同样的错误:

var scene1 = new THREE.Scene();
var sceneObj = THREE.Object3D.getObjectByName("scene1");

您需要在使用getObjectByName之前实例化对象。这将有效:

//create a Scene
var scene1 = new THREE.Scene();

//create an Object3D
var object1 = new THREE.Object3D();

//give the object a name. By default objects in three don't have names
//but you can add one manually
object1.name = 'obj1';

//add the object as a child of the scene
scene1.add(object1);

//now search through the scene's children for an object called 'obj1'
var obj1 = scene1.getObjectByName('obj1');

console.log(object1 === obj1); //true