2015-12-02 3 views
0

У меня есть модель здания в Three js. Для моего варианта использования я выбираю компонент из модели здания и фиксирую uuid компонента. Затем мне нужно нажать кнопку в меню, чтобы просмотреть подробную информацию. Меню вставляется в страницу в сценарии. Когда я нажимаю кнопку, он выбирает компонент здания, который остается за ним. Поэтому я не могу получить доступ к данным, которые я выбрал ранее. enter image description hereВыбор трех объектов js из прозрачного меню

На приведенном выше рисунке, например, у меня есть кнопки 1-3. Перед тем, как перейти к кнопкам, я выбираю один компонент модели здания. Затем, когда я нажимаю любую кнопку, мышь также выбирает компонент здания за ним, например окно за Button1, стену за Button2 и т. Д. Поэтому я не могу получить доступ к uuid компонента, который я выбрал ранее. Как я могу предотвратить это? Ниже приведен код:

JA.addMenu = function() { 

    JA.menu = JA.container.appendChild(document.createElement('div')); 
    JA.menu.id = 'movable'; 
    JA.menu.title = 'Move the menu around or click here to close the menu'; 
    JA.menu.addEventListener('mousedown', JA.mouseMove, false); 
    JA.menu.innerHTML = '<a id=closerIcon href=JavaScript:JA.toggleMenu(); ><p><i class="fa fa-bars"></i></p></a>' + 
     '<p>' + 
      '<a href="" title=' + JA.TitleText2 + '>' + JA.TitleText1 + '' + JA.TitleText1 + '</a> ' + 
     '</p>' + 
     '<hr>' + 
    ''; 
    window.addEventListener('mouseup', JA.mouseUp, false); 

}; 

JA.Button1Tab = function() { 

    var tab = JA.menu.appendChild(document.createElement('div')); 
    tab.title = 'Button1'; 
    tab.innerHTML = 
     '<a href=# onclick=JA.toggleDialogs(JA.aboutDialog); ><p class=button >' + 
      '<i class="fa fa-share-alt"></i> Button1' + 
     '</p></a>'; 
    JA.aboutDialog = JA.container.appendChild(document.createElement('div')); 
    JA.aboutDialog.style.cssText = 'display: none; background-color: #ccc; left: 50px; opacity: 0.9; padding: 20px; ' + 
     'bottom: 0; left: 0; height: 370px; margin: auto; position: absolute; right: 0; top: 0; width: 500px; z-index:10; '; 
    JA.aboutDialog.innerHTML = 
     '<h3>' + document.title + ' ' + JA.titleIcon + '</h3>' + 
     +'<h4>Menu explains the following:</h4>' 
    ''; 
}; 
+0

поэтому каждое интерактивное действие работает (например, поворачивает, выбирает, кастрюлю или что еще) игнорирует меню спереди? – mrapsogos

+0

Все интерактивные действия работают правильно в Three js. Он не игнорирует меню. Функции, определенные для кнопок, работают хорошо. Для моего прецедента я иду в модель здания и выбираю один компонент в модели. Затем я нажимаю кнопку. Но затем он выбирает компонент здания, который находится за кнопкой, и после запуска функция, которую я определил для кнопки – yalcinm1

+0

aha. поэтому контейнер и меню работают одновременно. Первый подход состоит в том, чтобы отделить клики (например, щелкнуть правой кнопкой мыши для выбора объекта и оставить для меню), второй подход заключается в том, чтобы распустить контейнер, пока отображается меню. Скажи мне, правильно ли я это сделаю, или тебе нужно что-то еще. – mrapsogos

ответ

1

ОК, поэтому в своем коде вы установили z-индекс кнопок меню. Попробуйте установить z-индекс панели меню, чтобы контейнер находился под меню. Меню и контейнер в вашем коде находятся на одном уровне, поэтому оба прослушивают событие click.

Смежные вопросы