【问题标题】:Click event information in context menu callback上下文菜单回调中的点击事件信息
【发布时间】:2020-04-22 10:59:06
【问题描述】:

可以为查看器的上下文菜单创建自定义项,并且可以注册回调('target' 属性)。但是单击事件不会在此回调中传递 - 我需要它来获取“ctrl”键状态。 要解决这个问题,我必须将 Autodesk.Viewing.Private.ContextMenu.prototype.addCallbackToMenuItem 方法覆盖为“脏解决方案”。 还有其他解决方案吗? 附言或者您可以在“addCallbackToMenuItem”方法中的“目标”回调中传递“事件”吗?变化不大,但处理元按钮状态很有用

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    不确定这里的延迟是什么?

    当您注册自定义上下文菜单时,您可以访问原始鼠标事件以及status 对象的按键状态:

    NOP_VIEWER.registerContextMenuCallback('MyExtensionName', function (menu, status) {
    
             menu.push({
                  title: 'context menu name',
                  target: function () {
                      //access mouse event via "status.event"
             }});
    
          })
    

    编辑 Autodesk.Viewing.Extensions.ViewerObjectContextMenu.buildMenu 可以使用相同的事件对象

    ViewerObjectContextMenu.prototype.buildMenu = function (event, status) {
    ...
    

    【讨论】:

    • 谢谢,布莱恩!我需要我自己的上下文菜单(在覆盖的“buildMenu”方法中有额外的逻辑),另外我需要在某些位置添加我的菜单项(不是到最后),所以不幸的是,“registerContextMenuCallback”不是这种情况......
    • 那么最好订阅右键并从那里构建您自己的上下文菜单 - 请参阅here
    • 好的,我试试。但总的来说,我喜欢带有扩展 Autodesk.Viewing.Extensions.ViewerObjectContextMenu 的当前解决方案。唯一缺少的是将“事件”作为参数传递给“目标”回调。如果您在下一个版本中添加它,我将不胜感激。
    • 调用buildMenu(event, status)时同样的事件对象可用
    • Bryan,当然,它是在'buildMenu'内部传递的,但是在这个方法内部,我只能用项目填充一个菜单,稍后将调用菜单项的'target'回调而不传递'事件”(这是我要求解决的问题)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多