浏览代码

Merge pull request #13972 from rkirsling/orbitcontrols-ctrldrag

OrbitControls: Support Ctrl-drag as right-drag alternative.
Mr.doob 7 年之前
父节点
当前提交
19e6f97005
共有 1 个文件被更改,包括 19 次插入7 次删除
  1. 19 7
      examples/js/controls/OrbitControls.js

+ 19 - 7
examples/js/controls/OrbitControls.js

@@ -75,7 +75,7 @@ THREE.OrbitControls = function ( object, domElement ) {
 	this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };
 	this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };
 
 
 	// Mouse buttons
 	// Mouse buttons
-	this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };
+	this.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT };
 
 
 	// for reset
 	// for reset
 	this.target0 = this.target.clone();
 	this.target0 = this.target.clone();
@@ -677,17 +677,29 @@ THREE.OrbitControls = function ( object, domElement ) {
 
 
 		switch ( event.button ) {
 		switch ( event.button ) {
 
 
-			case scope.mouseButtons.ORBIT:
+			case scope.mouseButtons.LEFT:
 
 
-				if ( scope.enableRotate === false ) return;
+				if ( event.ctrlKey || event.metaKey ) {
+
+					if ( scope.enablePan === false ) return;
+
+					handleMouseDownPan( event );
+
+					state = STATE.PAN;
+
+				} else {
+
+					if ( scope.enableRotate === false ) return;
+
+					handleMouseDownRotate( event );
 
 
-				handleMouseDownRotate( event );
+					state = STATE.ROTATE;
 
 
-				state = STATE.ROTATE;
+				}
 
 
 				break;
 				break;
 
 
-			case scope.mouseButtons.ZOOM:
+			case scope.mouseButtons.MIDDLE:
 
 
 				if ( scope.enableZoom === false ) return;
 				if ( scope.enableZoom === false ) return;
 
 
@@ -697,7 +709,7 @@ THREE.OrbitControls = function ( object, domElement ) {
 
 
 				break;
 				break;
 
 
-			case scope.mouseButtons.PAN:
+			case scope.mouseButtons.RIGHT:
 
 
 				if ( scope.enablePan === false ) return;
 				if ( scope.enablePan === false ) return;