【问题标题】:ThreeJs OrbitControls: How can I disable mouse pan without disabling keys pan?ThreeJs OrbitControls:如何在不禁用键平移的情况下禁用鼠标平移?
【发布时间】:2019-02-25 19:11:44
【问题描述】:

我正在尝试禁止用户使用鼠标进行平移,但仍允许使用按键进行平移。如果使用controls.enablePan = false;,我无法使用按键平移。但是,如果我尝试重新绑定鼠标按钮,它会强制我将鼠标按钮分配给 Orbit、Pan 和 Zoom。如何禁用用户使用鼠标平移,但仍然可以使用键平移?我不想完全禁用鼠标,因为我需要能够使用鼠标右键进行环绕。

【问题讨论】:

  • 尝试设置 CSS pointer-events: none; 它将禁用鼠标事件,同时处理键盘事件。参考tympanus.net/codrops/css_reference/pointer-events
  • @AlexKhoroshylov 谢谢回复,不过我还是需要用鼠标右键绕行。这不会完全禁用鼠标事件吗?
  • 它会禁用所有鼠标事件,是的

标签: javascript three.js


【解决方案1】:

没有选项可以仅禁用鼠标平移。您需要下载并修改OrbitControls.js并注释、删除或修改与鼠标平移相关的代码。

例如这一行

https://github.com/mrdoob/three.js/blob/bcd4bec92609ce8af76a590b0f281ecf71019c2b/examples/js/controls/OrbitControls.js#L703

还有这一行

https://github.com/mrdoob/three.js/blob/bcd4bec92609ce8af76a590b0f281ecf71019c2b/examples/js/controls/OrbitControls.js#L780

等等……

【讨论】:

  • 我从没想过编辑源代码。感谢您的建议!
【解决方案2】:

您是否已尝试更改 mouse buttons 属性?

类似的东西:

controls.mouseButtons = {
    LEFT: THREE.MOUSE.ROTATE,
    MIDDLE: THREE.MOUSE.DOLLY,
    RIGHT: ''
}

它解决了我前段时间遇到的类似问题。

【讨论】:

    【解决方案3】:

    您可以重新分配控制键,从而有效地禁用它们:

    this.controls.keys = { LEFT: 0, RIGHT: 0, UP: 0, BOTTOM: 0 }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2019-04-12
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      相关资源
      最近更新 更多