是否可以在查看器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 );
这里可能有一个很好的意图,但如果可以改变它会非常好。如果有一个顺利的解决方法,请告诉我,但我被卡住了。
答案 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