在OrbitControls处于活动状态时禁用点击侦听器

时间:2020-09-19 14:00:48

标签: javascript typescript three.js

我已经在GLTF模型上实现了click事件监听器,在代码中我也有OrbitControls。 单击侦听器的工作是在单击相交的对象时显示/隐藏div,但是问题是当我使用OrbitControls旋转/放置摄像头时,单击侦听器会被执行,因此每次我旋转摄像头时,div都会显示。

在OrbitControls处于活动状态时,是否仍可以禁用/暂停点击监听器?

下面是我正在使用的click侦听器:

function onMouseClick(event) {
    event.preventDefault();
    
    const mouse = {
        x: (event.clientX / renderer.domElement.clientWidth) * 2 - 1,
        y: -(event.clientY / renderer.domElement.clientHeight) * 2 + 1
    }

    raycaster.setFromCamera(mouse, camera);

    const intersects = raycaster.intersectObjects(sceneMeshes, false);

    if (intersects.length > 0) {
        INTERSECTED = intersects[0].object;

        if (intersects[0].object) {
            var elem = document.getElementsByClassName("centerDiv")
            elem[0].style.visibility = "visible";
        }
        
    } 
}

或完整代码:https://jsfiddle.net/azoughbi/y2jtrohs/1/

0 个答案:

没有答案