首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Autodesk Forge中编写onMouseOver事件代码

如何在Autodesk Forge中编写onMouseOver事件代码
EN

Stack Overflow用户
提问于 2017-07-23 06:15:14
回答 1查看 494关注 0票数 0

我在autodesk锻造中创建了一个简单的扩展。这个想法是,当我在3D对象上做一个鼠标超过事件时,它必须向我显示悬停对象/子对象的ID,我的扩展代码是这样运行的。

代码语言:javascript
运行
复制
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);

但是onMouseOver功能不起作用,有人能帮我吗?提前谢谢。

PS:我在脚本标记中包含了扩展,扩展也被加载了。

代码语言:javascript
运行
复制
oViewer.loadExtension('Autodesk.ADN.Viewing.Extension.MouseEvent');

我还从控制台获得了扩展已成功加载的确认。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-25 02:01:32

没有像Autodesk.Viewing.MOUSE_OVER_EVENT这样的事件.是你捏造的还是你从某个明显不正确的来源得到的?

处理该问题的方法是使用查看器工具(请参阅详细信息的post ),然后在handleMouseMove回调中执行以下操作:

代码语言:javascript
运行
复制
handleMouseMove (event) {

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

  if (hitTest) {

    console.log(hitTest)
  }
}

这是我写的关于观看者事件的另一篇文章,它有点老了,所以现在还有几篇文章,但是可以给你一个很好的起点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45262111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档