我目前正在使用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事件上做一个处理程序,但它会因此而不同功能,无法知道我是否点击了我想。)
答案 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);
};
如果数组中没有任何内容,则表示用户没有选择任何形状。