Skip to content

Commit d797469

Browse files
committed
🐛 修复mac电脑在鼠标滚轮缩放时瞬间剧变的情况
1 parent 60e603d commit d797469

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

app/src/core/service/controlService/controller/concrete/ControllerCamera.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,10 +291,17 @@ let isPressingCtrl = false;
291291
let isPreGrabbingWhenSpace = false;
292292

293293
function zoomCameraByMouseWheel(event: WheelEvent) {
294-
if (event.deltaY > 0) {
295-
Camera.targetScale *= 0.8;
296-
} else if (event.deltaY < 0) {
297-
Camera.targetScale *= 1.2;
294+
if (isMac) {
295+
// mac电脑滚动一格滚轮会触发很多次事件。这个列表里是每个事件的deltaY
296+
// [7, 7, 7, 7, 6, 7, 7, 6, 5, 5, 4, 4, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1]
297+
const deltaY = event.deltaY;
298+
Camera.targetScale *= 1 + deltaY / 500;
299+
} else {
300+
if (event.deltaY > 0) {
301+
Camera.targetScale *= 0.8;
302+
} else if (event.deltaY < 0) {
303+
Camera.targetScale *= 1.2;
304+
}
298305
}
299306
}
300307

@@ -365,6 +372,8 @@ function isMouseWheel(event: WheelEvent): boolean {
365372
const distance = Math.abs(event.deltaY);
366373
// 在mac系统下,测试者“雨幕”反馈数据:
367374
// 当移动距离是整数时,绝对是鼠标滚轮,当是小数时,绝对是触摸板
375+
// 测试者“大道”反馈数据:
376+
// 鼠标滚动一格,会显示好多小数字,4 5 6 7 6 5 4这样的。
368377
if (Number.isInteger(distance)) {
369378
// 整数距离,是鼠标滚轮
370379
return true;
@@ -374,6 +383,7 @@ function isMouseWheel(event: WheelEvent): boolean {
374383
}
375384
}
376385
}
386+
377387
if (event.deltaX !== 0 && event.deltaY !== 0) {
378388
// 斜向滚动肯定不是鼠标滚轮。因为滚轮只有横向滚轮和竖向滚轮
379389
return false;

0 commit comments

Comments
 (0)