@@ -48,8 +48,8 @@ export namespace ControllerCameraMac {
4848
4949 const FINGER_SCALE_MIN_DETECT_TIME = 2 ; // s
5050 // 上次检测时间
51- let lastDetectTime = performance . now ( ) ;
52- // let currentWheelMode: "fingerScale" | "mouseWheel" = "fingerScale";
51+ let lastDetectTime = Date . now ( ) ;
52+ let currentWheelMode : "fingerScale" | "mouseWheel" = "fingerScale" ;
5353 /**
5454 * 检测识别双指缩放
5555 * @param event
@@ -64,25 +64,28 @@ export namespace ControllerCameraMac {
6464 * 如果触发了一个事件移动不到1,那么后续连续触发的多个事件中都按双指缩放算
6565 */
6666 const y = event . deltaY ;
67- if ( y < 4 ) {
67+ if ( Math . abs ( y ) < 4 ) {
6868 // 一定是双指缩放!
69- // currentWheelMode = "fingerScale";
70- lastDetectTime = performance . now ( ) ;
69+ currentWheelMode = "fingerScale" ;
70+ lastDetectTime = Date . now ( ) ;
7171 return true ;
7272 } else {
7373 // 可能是滚轮,也可能是双指缩放的中间过程
74- const currentTime = performance . now ( ) ;
74+ const currentTime = Date . now ( ) ;
7575 const diffTime = currentTime - lastDetectTime ;
7676 if ( diffTime > FINGER_SCALE_MIN_DETECT_TIME * 1000 ) {
7777 // 间隔过大,认为是滚轮
78- // currentWheelMode = "mouseWheel";
78+ currentWheelMode = "mouseWheel" ;
7979 lastDetectTime = currentTime ;
8080 return false ;
8181 } else {
82- // 间隔时间太短,认为是双指缩放的中间过程
83- // currentWheelMode = "fingerScale";
8482 lastDetectTime = currentTime ;
85- return true ;
83+ // 间隔时间太短,按照上一次的模式判断
84+ if ( currentWheelMode === "fingerScale" ) {
85+ return true ;
86+ } else {
87+ return false ;
88+ }
8689 }
8790 }
8891 }
@@ -93,8 +96,8 @@ export namespace ControllerCameraMac {
9396 */
9497 export function handleTwoFingerScale ( event : WheelEvent ) {
9598 console . log ( "handleTwoFingerScale" ) ;
96- // 构建幂函数 y = 1.2 ^ x
97- const power = 1.2 ;
99+ // 构建幂函数 y = a ^ x
100+ const power = 1.02 ; // 1.05 有点敏感,1.01 有点迟钝
98101 // y 是 camera 的currentScale
99102 // 通过y反解x
100103 const currnetCameraScale = Camera . currentScale ;
@@ -104,7 +107,7 @@ export namespace ControllerCameraMac {
104107 const newX = x + diffX ;
105108 // 求解新的 camera scale
106109 const newCameraScale = Math . pow ( power , newX ) ;
107- Camera . currentScale = newCameraScale ;
110+ // Camera.currentScale = newCameraScale;
108111 Camera . targetScale = newCameraScale ;
109112 }
110113
0 commit comments