2015-08-11 3 views
0

В настоящее время я использую X3DOM для отображения некоторых 3D-моделей на веб-странице. Дело в том, что я рисую модели один за другим, когда нажимаю на них на холсте, и хочу, чтобы он возвращал их исходный цвет при нажатии, я имею в виду, все еще на холсте X3DOM, но не на узле X3DOM, таком как формы или иначе.X3dom click away event

Для этого мне нужно получить событие, когда я нажимаю на пустоту, или способ узнать, что я не нажимаю на фигуру или что-то еще, но все еще щелкаю в холсте x3dom.

Вот где мне нужна помощь, потому что единственное, что я захвачу, когда делает:

document.onload = function() { 

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

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

     console.log(event); 

    }, false); 
}; 

является событие щелчка на x3dom холсте (#the-one) и ничего другого, даже если я нажимаю на форме (I может сделать обработчик в событии onclick формы, но, таким образом, он будет отличаться от функции и не может быть полезен, если я удалю вас, я полагаю).

ответ

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

Если нет ничего в массиве, то это означает, что пользователь не выбрать любую форму.