在我的three.js场景中,我可以添加和编辑对象。 我最近添加了一个DAT.GUI文件夹,我可以在其中编辑对象颜色。 但是当没有任何SELECTED对象时,我用jQuery隐藏它:
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);
}
}
但问题是,当我点击该按钮时它会消失,因为如果用户点击其他地方而不是对象,我希望该对象是DESELECTED。
可能是什么解决方案?
答案 0 :(得分: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);
}
}