2017-02-07 23 views
0

Я стараюсь это three.js how to get scene by id(name)Как не получить доступ сцены по имени или идентификатору в Three.js нет scene.childs только сцены

и говорят

Uncaught TypeError: THREE.getObjectByName не является функцией

почему я не могу получить доступ к сцене по именам или ids ????

код, который

// 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