2017-02-07 40 views
0

我试试这个three.js how to get scene by id(name)如何通过名称或ID来访问现场three.js所没有scene.childs仅场面

,并说

遗漏的类型错误: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"); 

我不知道为什么这是不工作?

回答

1

变量名中不能有-1或-2。

+0

这个例子iknow是 – George

+0

平时我有名字像这样cube_1或cube_2 – George

+0

你不能发布非工作代码,并期望人们作出推论。 – gaitat

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 
+0

thnx为答案,但我认为你不明白我的问题 – George

+0

我怀疑这让我们两个。也许你会重新解释一遍?在寻求帮助时,请务必发布有效的代码。 – looeee