简体   繁体   English

如何在Autodesk Forge中为onMouseOver事件编码

[英]How to code for onMouseOver event in Autodesk Forge

I have created a simple extension in autodesk forge. 我已经在Autodesk Forge中创建了一个简单的扩展。 The idea is that when I make a mouse-over event on a 3D object it has to show me the ID of the hovered object/sub-object my extension code runs like this. 这个想法是,当我在3D对象上进行鼠标悬停事件时,它必须向我显示悬停的对象/子对象的ID,我的扩展代码就是这样运行的。

 AutodeskNamespace("Autodesk.ADN.Viewing.Extension"); Autodesk.ADN.Viewing.Extension.MouseEvent = function (viewer, options) { Autodesk.Viewing.Extension.call(this, viewer, options); var _self = this; var _viewer = viewer; var _selectedId = null; //On Load of the exension function _self.load = function () { _viewer.addEventListener( Autodesk.Viewing.MOUSE_OVER_EVENT, _self.onMouseOver); console.log("Autodesk.ADN.MouseEvent loaded"); return true; }; //On unload of the exension function _self.unload = function () { _viewer.removeEventListener( Autodesk.Viewing.MOUSE_OVER_EVENT, _self.onMouseOver); console.log("Autodesk.ADN.MouseEvent unloaded"); return true; }; // Event function initialization _self.onMouseOver = function (event) { var dbId = event.dbIdArray[0]; if (typeof dbId !== 'undefined') { _selectedId = dbId; alert('ID: ' + _selectedId); } else _selectedId = null; } }; Autodesk.ADN.Viewing.Extension.MouseEvent.prototype = Object.create(Autodesk.Viewing.Extension.prototype); Autodesk.ADN.Viewing.Extension.MouseEvent.prototype.constructor = Autodesk.ADN.Viewing.Extension.MouseEvent; Autodesk.Viewing.theExtensionManager.registerExtension( 'Autodesk.ADN.Viewing.Extension.MouseEvent', Autodesk.ADN.Viewing.Extension.MouseEvent); 

but the onMouseOver function is not working, can anyone please help me? 但是onMouseOver函数不起作用,有人可以帮助我吗? thanks in advance. 提前致谢。

PS: I have included the extensions in the script tags and the extension is loaded likewise. PS:我已经在脚本标签中包含了扩展名,并且扩展名也被加载。

oViewer.loadExtension('Autodesk.ADN.Viewing.Extension.MouseEvent');

I also get a confirmation from the console that the extension is loaded successfully. 我还从控制台收到确认扩展已成功加载的确认。

There is no such event as Autodesk.Viewing.MOUSE_OVER_EVENT ... did you just made that up or you got it from some - apparently incorrect - source? 没有诸如Autodesk.Viewing.MOUSE_OVER_EVENT这样的事件……您是刚刚弥补还是从某个(显然是不正确的)来源获得了?

The way to handle that would be to use a viewer tool (see that post for details ), then in handleMouseMove callback, do the following: 处理该问题的方法是使用查看器工具(有关详细信息 ,请参见该帖子),然后在handleMouseMove回调中,执行以下操作:

handleMouseMove (event) {

  var hitTest = _self.viewer.clientToWorld(
    event.canvasX,
    event.canvasY,
    true)

  if (hitTest) {

    console.log(hitTest)
  }
}

Here is another post I wrote about viewer events , it is a bit old, so there are a couple more now but can give you a good starting point. 这是我写的另一篇有关查看器事件的文章 ,它有些陈旧,所以现在还有更多,但可以为您提供一个很好的起点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM