Forge Viewer中的鼠标和键事件

时间:2018-03-13 15:25:07

标签: autodesk-viewer

是否可以在查看器DOM元素之外忽略Forge查看器中的键事件?

我有一个单独的DOM元素,它有自己的关键事件,但它们不起作用,因为查看器事件适用于整个DOM(窗口)。我可以看到鼠标事件和关键事件的处理方式不同,但无法理解原因。

viewer3D.js (v.4.0)中的第13015-13026行:

// If we want to continue listenting to mouse movements outside of the window
  // we need to tie our event listener to the window

  this.domElement.addEventListener( 'mousewheel',     this.mousewheel, false );
  this.domElement.addEventListener( 'DOMMouseScroll', this.mousewheel, false ); // firefox

  //** this.domElement.addEventListener( 'touchstart', function( event ) { _this.touchstart( event )}, false );
  //** this.domElement.addEventListener( 'touchmove', function( event ) { _this.touchmove( event )}, false );

  window.addEventListener( 'keydown', this.keydown, false );
  window.addEventListener( 'keyup',   this.keyup,   false );
  window.addEventListener( 'blur', this.blur, false );

这里可能有一个很好的意图,但如果可以改变它会非常好。如果有一个顺利的解决方法,请告诉我,但我被卡住了。

1 个答案:

答案 0 :(得分:0)

您应该能够注册具有高优先级的自定义工具(例如1000)并在所有其他查看器工具之前吸收这些事件。有关tool.getPriority的详细信息,请查看changelog

// in your custom tool ...
this.handleKeyDown = function(event, keyCode) {

  return true; // absorbed event ...
};

this.getPriority = function() {
   return 1000; // Default is 0, 
   //higher numerical value results in higher priority.
};

这篇文章:Creating custom tool