我在autodesk锻造中创建了一个简单的扩展。这个想法是,当我在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);
但是onMouseOver功能不起作用,有人能帮我吗?提前谢谢。
PS:我在脚本标记中包含了扩展,扩展也被加载了。
oViewer.loadExtension('Autodesk.ADN.Viewing.Extension.MouseEvent');我还从控制台获得了扩展已成功加载的确认。
发布于 2017-07-25 02:01:32
没有像Autodesk.Viewing.MOUSE_OVER_EVENT这样的事件.是你捏造的还是你从某个明显不正确的来源得到的?
处理该问题的方法是使用查看器工具(请参阅详细信息的post ),然后在handleMouseMove回调中执行以下操作:
handleMouseMove (event) {
var hitTest = _self.viewer.clientToWorld(
event.canvasX,
event.canvasY,
true)
if (hitTest) {
console.log(hitTest)
}
}这是我写的关于观看者事件的另一篇文章,它有点老了,所以现在还有几篇文章,但是可以给你一个很好的起点。
https://stackoverflow.com/questions/45262111
复制相似问题