2015-10-21 2 views
0

В моей сцене three.js я могу добавлять и редактировать объекты. Недавно я добавил папку DAT.GUI, в которой я могу редактировать цвет объектов. Но когда нет никакого выделенного объекта, я Hidding его с JQuery:Three.js - Selected/Deselected object

function onDocumentMouseDown(event){ 
    event.preventDefault(); 
    mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
    mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 
    raycaster.setFromCamera(mouse, camera); 
    var intersects = raycaster.intersectObjects(objects); 
    if(intersects.length > 0){ 
     SELECTED = intersects[ 0 ].object; 

     control.attach(SELECTED); 
     scene.add(control); 
     $(guiObject.domElement).attr("hidden", false); 
    } else{ 
     control.detach(SELECTED); 
     scene.remove(control); 
     control.update(); 
     $(guiObject.domElement).attr("hidden", true); 
    } 
} 

Но проблема в том, что, когда я нажав на эту кнопку она исчезает, потому что я хотел объект, который будет дезактивируете если пользователь щелкает в другом месте, чем на объекте.

Что может быть решением?

ответ

0

Falk, проблема решена.

я должен был изменить свою функцию следующим образом:

function onDocumentMouseDown(event){ 
    event.preventDefault(); 
    if($(event.target).is('canvas')){ 
     mouse.x = (event.clientX/window.innerWidth) * 2 - 1; 
     mouse.y = - (event.clientY/window.innerHeight) * 2 + 1; 
     raycaster.setFromCamera(mouse, camera); 
     var intersects = raycaster.intersectObjects(objects); 
     if(intersects.length > 0){ 
      SELECTED = intersects[ 0 ].object; 

      control.attach(SELECTED); 
      scene.add(control); 
      $(guiObject.domElement).attr("hidden", false); 
      // SELECTED.material.color.setHex(Math.random() * 0xffffff); 
     } else{ 
      control.detach(SELECTED); 
      scene.remove(control); 
      control.update(); 
      $(guiObject.domElement).attr("hidden", true); 
     } 
    } else{ 
     $(guiObject.domElement).attr("hidden", false); 
    } 
} 
Смежные вопросы