X3dom点击远离事件

时间:2015-08-11 09:52:40

标签: javascript events click x3dom

我目前正在使用X3DOM在网页上显示一些3D模型。 关键是,我在画布上单击它们时逐个着色模型,我希望它在单击时返回原始颜色,我的意思是,仍然在X3DOM画布中但不在X3DOM节点上,例如形状或其他。

要做到这一点,我需要在点击虚空时获取事件,或者找出我没有点击形状或任何东西但仍然点击x3dom画布的方法。

这就是我需要帮助的地方,因为我在做的时候唯一能抓到的是:

document.onload = function() {

    var $element = document.getElementById("the-one");

    $element.addEventListener("click", function(event) {

        console.log(event);

    }, false);
};

是x3dom画布上的click事件(#the-one),没有别的,即使我点击一个形状(我可以在形状的onclick事件上做一个处理程序,但它会因此而不同功能,无法知道我是否点击了我想。)

1 个答案:

答案 0 :(得分:0)

我找到了某种方式:

document.onload = function() 
{
    // The X3D element
    var $element = document.getElementById("the-one");

    // Adding the click event
    $element.addEventListener("click", function(event)
    {
        // Get the position of the mouse in the canvas
        var canvasPos = this.runtime.mousePosition(event);

        // Return an array of shape elements contained in a rect on the canvas (x1,y1 and x2,y2)
        var picked = this.runtime.pickRect(canvasPos[0], canvasPos[1], canvasPos[0], canvasPos[1]);

        if (picked.length)
        {
            // do whatever you want
        }

    }, false);
};

如果数组中没有任何内容,则表示用户没有选择任何形状。