Three.js - 选定/取消选择的对象

时间:2015-10-21 13:17:50

标签: javascript three.js selected

在我的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。

可能是什么解决方案?

1 个答案:

答案 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);
    }
}