【问题标题】:How to capture mouse-over or hover event in Autodesk Forge Viewer?如何在 Autodesk Forge Viewer 中捕获鼠标悬停或悬停事件?
【发布时间】:2020-11-21 09:18:39
【问题描述】:

我正在为客户开发 POC,我建议使用 Autodesk Forge 平台在 Web 上显示 3D 插图并与之交互。

我能够设计一个管理面板,管理员用户可以在其中标记插图中的不同部分,当最终用户单击标记的部分时,我们要么导航到该部分的插图,要么显示该部分的存储信息。为此,我使用了Autodesk.Viewing.SELECTION_CHANGED_EVENT

另一个主要要求是在将鼠标悬停在图像内的部件上时显示部件名称和一些其他信息。我找不到任何要绑定到鼠标悬停或悬停在模型内的部件上的事件。

附:将我指向可以找到其他受支持事件信息的文档将对我未来的使用非常有帮助。

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    ASAIK,没有像MOUSE_OVER_EVENT这样的直接事件来返回悬停元素,但是你可以使用mousemove事件并计算命中元素的dbid,这里有一个blog post你可以参考,希望对你有帮助,让我知道是否还有其他问题。

    【讨论】:

      【解决方案2】:

      您可以利用 object-under-mouse-changed 事件。它传回一个“dbid”,可用于识别悬停在上面的对象。当它没有被悬停时(画布是悬停对象),它似乎返回 -1。

      这是添加事件侦听器的示例(假设您的查看器是“查看器”)。只需记录您可能感兴趣的项目,并展示如何从 dbId 中获取名称。

      viewer.addEventListener(Autodesk.Viewing.OBJECT_UNDER_MOUSE_CHANGED,function(e){doStuff(e)});
      
      function doStuff(e){
        console.log(e); /*To see everything passed back by the event.*/
        console.log(e.dbId); /*To get the internal ID of the object being hovered*/
        /*To get the object name from the dbId.  Note that this also includes the handle in the return of the name.*/
        viewer.getProperties(e.dbId, function(displayProperties){
         console.log(displayProperties.name); 
        });
      }
      

      【讨论】:

      • 我在 7.9.0 版本中找不到这个事件,知道吗?
      • 不,并且它没有列在他们的 v7 更新日志中,因为在那之后的任何时间都会添加它。我正在使用 7.*(因此截至发表此评论时目前为 7.41)。如果您尝试复制/粘贴代码,是否表明该事件不存在?如果您尝试使用较新的查看器版本,您的应用程序是否会发生重大更改? *forge.autodesk.com/en/docs/viewer/v7/change_history/…
      猜你喜欢
      • 2015-09-03
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多