[英]How to code for onMouseOver event in Autodesk Forge
我已經在Autodesk Forge中創建了一個簡單的擴展。 這個想法是,當我在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');
我還從控制台收到確認擴展已成功加載的確認。
沒有諸如Autodesk.Viewing.MOUSE_OVER_EVENT
這樣的事件……您是剛剛彌補還是從某個(顯然是不正確的)來源獲得了?
處理該問題的方法是使用查看器工具(有關詳細信息 ,請參見該帖子),然后在handleMouseMove
回調中,執行以下操作:
handleMouseMove (event) {
var hitTest = _self.viewer.clientToWorld(
event.canvasX,
event.canvasY,
true)
if (hitTest) {
console.log(hitTest)
}
}
這是我寫的另一篇有關查看器事件的文章 ,它有些陳舊,所以現在還有更多,但可以為您提供一個很好的起點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.