0
默认情况下,相机平移与鼠标右键如何在Trackball控件(r87)中使用鼠标左键实现PerspectiveCamera平移?
Control.panSpeed = 1.5;
,但我希望它在鼠标左键的工作。如何设置?
默认情况下,相机平移与鼠标右键如何在Trackball控件(r87)中使用鼠标左键实现PerspectiveCamera平移?
Control.panSpeed = 1.5;
,但我希望它在鼠标左键的工作。如何设置?
这需要对轨迹球代码进行简单的修改。
如果你看一下TrackballControls.js,一开始细节的键码,相关状态机(source code):
THREE.TrackballControls = function (object, domElement) {
var _this = this;
var STATE = {NONE: -1, ROTATE: 0, ZOOM: 1, PN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PANE: 4};
this.object = object;
this.domElement = (domElement !== undefined) ? domElement : document;
// API
this.enabled = true;
this.screen = { left: 0, top: 0, width: 0, height: 0 };
这是关系到keydown()
功能进一步下降(source code):
function keydown(event) {
if (_this.enabled === false) return;
window.removeEventListener('keydown', keydown);
_prevState = _state;
if (_state !== STATE.NONE) {
return;
} else if (event.keyCode === _this.keys[ STATE.ROTATE ] && ! _this.noRotate){
_state = STATE.ROTATE;
} else if (event.keyCode === _this.keys[ STATE.ROTATE ] && ! _this.noZoom){
_state = STATE.ZOOM;
} else if (event.keyCode === _this.keys[ STATE.ROTATE ] && ! _this.noPan){
_state = STATE.PAN;
}
所以,我没有机会测试这个,但你应该能够将第11行的PAN从2(右键的键码)更改为0(左键单击)或任何其他你想要的键码。请记住更改ROTATE以避免同时旋转和平移的容易出错的指令。
编辑:每@ TheJim01的有益修正,实际点击事件实际上触发发生在function mousedown(event)
在脚本的393行。 event.button对应于状态机中的相应编号。对此感到抱歉。
我相信你的意思是'mousedown'事件,而不是'keydown'。在将动作状态设置为当前鼠标按钮('_state = event.button;')后,会出现相关逻辑。 – TheJim01
请阅读[为什么不在上传图片时提问]?(https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-on-so-when - 问一个问题) - 这也适用于回答。 – Rabbid76
@AquaVitae非常感谢。它解决了。但我真的想要左键点击PAN和ROTATE键码。无论如何都有可能吗? – Mhd