Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js通过Gui阻止光线投射_Three.js_Dat.gui - Fatal编程技术网

Three.js通过Gui阻止光线投射

Three.js通过Gui阻止光线投射,three.js,dat.gui,Three.js,Dat.gui,我想使用光线投射选择对象,但每次我想在three.js gui上选择某个对象时,都会触发Mousdownevent。 我怎么能说“如果Gui在对象前面,不要触发” document.addEventListener('mousedown',onDocumentMouseDown,false); 函数onDocumentMouseDown(事件){ 如果(事件){} gui是一个普通的three.js gui,如下所示: gui = new GUI( { width: 330 } ); 解决此

我想使用光线投射选择对象,但每次我想在three.js gui上选择某个对象时,都会触发Mousdownevent。 我怎么能说“如果Gui在对象前面,不要触发”

document.addEventListener('mousedown',onDocumentMouseDown,false);
函数onDocumentMouseDown(事件){
如果(事件){}

gui是一个普通的three.js gui,如下所示:

gui = new GUI( { width: 330 } );

解决此问题的一种方法是使用
jQuery
和一个附加控制变量:

$(gui.domeElement).mouseenter(函数(evt){
enableRaycasting=false;
} );
$(gui.domElement).mouseleave(函数(){
enableRaycasting=true;
} );
然后可以使用
启用光线投射
来确定是否应该进行光线投射


演示:

这非常有帮助,但仍然存在一个问题:如果dat.gui的下拉菜单太大,并且不再位于gui.doElement区域,则有时(并非每次)将启用光线投射。