Я хочу создать двухуровневое контекстное меню, но для этого нет API. Просто посмотрите на этот контекст уровня изображение меню что я могу сделать?
Как создать двухуровневое контекстное меню в Autodesk Forge
Ответы (2)
К сожалению, он недоступен в текущей версии программы просмотра. Возможно, вам придется написать собственное контекстное меню глубоко. Но есть обходной путь, которому вы можете следовать:
- Переопределите функции
Autodesk.Viewing.Private.ContextMenu
, чтобы обеспечить многоуровневое меню. - Обратитесь к кодам из
Autodesk.Viewing.UI.ObjectContextMenu
, затем создайте свой собственныйObjectContextMenu
и замените свойствоcontextMenu
собственными несколькими уровнямиContextMenu
из шага 1. - Обратитесь к кодам из
Autodesk.Viewing.Extensions.ViewerObjectContextMenu
, затем напишите свой собственныйViewerObjectContextMenu
, который наследует пользовательскийObjectContextMenu
из шага 2.
P.S. Это всего лишь обходной путь, это не формальное решение, возможно, вам придется использовать его на свой страх и риск.
person
Eason Kang
schedule
24.08.2017
Довольно просто получить многоуровневое контекстное меню, производное от Autodesk.Viewing.UI.ObjectContextMenu
. Просто укажите массив в поле target
:
buildMenu (event, node) {
var menu = []
switch (node.type) {
case 'hubs':
menu.push({
title: 'Show details',
className: 'fa fa-share',
target: [{
title: 'Hub details',
className: 'fa fa-cloud',
target: () => {
this.emit('context.details', {
event, node, type: 'hubs'
})
}
}, {
title: 'Projects details',
className: 'fa fa-folder',
target: () => {
this.emit('context.details', {
event, node, type: 'hubs.projects'
})
}
}]
})
break
Полный пример этого можно найти здесь: DataContextMenu.js
person
Philippe
schedule
31.08.2017
Спасибо, этот метод может создать двухуровневое меню. Но как вызвать двухуровневое меню с помощью события наведения? Не очень полезно запускать вторичное меню с помощью события щелчка.
- person weijie; 04.09.2017
Что ж, вы можете создать свой собственный ContextMenu и реализовать собственное поведение, посмотрите методы ContextMenu.prototype.addCallbackToMenuItem и ContextMenu.prototype.addSubmenuCallbackToMenuItem в viewer3D.js, где реализовано событие щелчка. Вместо этого используйте событие наведения мыши. Или, как предложил Eason ранее, реализовать с нуля собственное меню или использовать для этого множество доступных библиотек с открытым исходным кодом. К сожалению, я не могу порекомендовать вам какой-то конкретный.
- person Philippe; 04.09.2017
Большое спасибо. Я изменил несколько функций viewer3D.js по-вашему. Работает хорошо.
- person weijie; 05.09.2017