我正在编写一个使用Three.js的简单OrbitControls.js演示。目前,鼠标左键运行,鼠标右键平盘,鼠标中间按钮/滚轮娃娃(缩放)。但我想交换轨道和平移,使它们分别由鼠标右键和鼠标左键控制。是否有可更改此功能的配置设置?或者我必须深入研究代码才能改变这一点吗?
发布于 2016-07-20 10:10:24
到现在为止,您可以非常容易地配置鼠标控件。只需获取Control对象,然后更改鼠标按钮配置,如下所示:
this._controls = new OrbitControls(world._engine._camera, world._container);
// Mouse buttons
this._controls.mouseButtons = { ORBIT: THREE.MOUSE.RIGHT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.LEFT };
发布于 2014-10-03 17:49:32
您需要深入研究代码;目前还没有配置选项。幸运的是,这是一个非常简单的更改;您只需要更新onMouseDown
函数并更改检查event.button
的条件
// you could change this to `event.button == 1` if you wanted the
/// right mouse button to rotate, and so on...
if ( event.button === 0 ) {
if ( scope.noRotate === true ) return;
state = STATE.ROTATE;
rotateStart.set( event.clientX, event.clientY );
} else if ( event.button === 1 ) {
if ( scope.noZoom === true ) return;
state = STATE.DOLLY;
dollyStart.set( event.clientX, event.clientY );
} else if ( event.button === 2 ) {
if ( scope.noPan === true ) return;
state = STATE.PAN;
panStart.set( event.clientX, event.clientY );
}
https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrbitControls.js#L333-L352
将这些控件放在示例中(而不是核心的一部分)的原因之一是,人们的需求差异很大,因此鼓励您编辑这些控件以满足您的需要。
three.js r68
发布于 2019-01-11 22:33:02
在Three.js r99中,您可以切换轨道控制鼠标按钮如下:
controls.mouseButtons = {
LEFT: THREE.MOUSE.RIGHT,
MIDDLE: THREE.MOUSE.MIDDLE,
RIGHT: THREE.MOUSE.LEFT
}
请参阅https://threejs.org/docs/#examples/controls/OrbitControls
https://stackoverflow.com/questions/26183926
复制相似问题