Skip to content

Commit 94d158a

Browse files
committed
fix: #315 添加横向滚动画面的鼠标滚轮设置项
1 parent b6cb849 commit 94d158a

File tree

6 files changed

+43
-15
lines changed

6 files changed

+43
-15
lines changed

app/src/core/service/Settings.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ export namespace Settings {
7171
textNodeStartEditMode: "enter" | "ctrlEnter" | "altEnter" | "shiftEnter";
7272
textNodeSelectAllWhenStartEditByKeyboard: boolean;
7373
textNodeSelectAllWhenStartEditByMouseClick: boolean;
74-
mouseWheelMode: "zoom" | "move";
75-
mouseWheelWithShiftMode: "zoom" | "move";
76-
mouseWheelWithCtrlMode: "zoom" | "move";
74+
mouseWheelMode: "zoom" | "move" | "moveX";
75+
mouseWheelWithShiftMode: "zoom" | "move" | "moveX";
76+
mouseWheelWithCtrlMode: "zoom" | "move" | "moveX";
7777
// 音效相关
7878
soundEnabled: boolean;
7979
cuttingLineStartSoundFile: string;

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,10 @@ ControllerCamera.mousewheel = (event: WheelEvent) => {
179179
if (Controller.pressingKeySet.has("shift")) {
180180
if (Camera.mouseWheelWithShiftMode === "zoom") {
181181
zoomCameraByMouseWheel(event);
182-
} else {
182+
} else if (Camera.mouseWheelWithShiftMode === "move") {
183183
moveCameraByMouseWheel(event);
184+
} else if (Camera.mouseWheelWithShiftMode === "moveX") {
185+
moveXCameraByMouseWheel(event);
184186
}
185187
} else if (Controller.pressingKeySet.has("control")) {
186188
// 不要在节点上滚动
@@ -189,13 +191,21 @@ ControllerCamera.mousewheel = (event: WheelEvent) => {
189191
// 给这个entity一个特效
190192
Stage.effectMachine.addEffect(EntityCreateFlashEffect.fromRectangle(entity.collisionBox.getRectangle()));
191193
} else {
192-
zoomCameraByMouseWheel(event);
194+
if (Camera.mouseWheelWithCtrlMode === "zoom") {
195+
zoomCameraByMouseWheel(event);
196+
} else if (Camera.mouseWheelWithCtrlMode === "move") {
197+
moveCameraByMouseWheel(event);
198+
} else if (Camera.mouseWheelWithCtrlMode === "moveX") {
199+
moveXCameraByMouseWheel(event);
200+
}
193201
}
194202
} else {
195203
if (Camera.mouseWheelMode === "zoom") {
196204
zoomCameraByMouseWheel(event);
197-
} else {
205+
} else if (Camera.mouseWheelMode === "move") {
198206
moveCameraByMouseWheel(event);
207+
} else if (Camera.mouseWheelMode === "moveX") {
208+
moveXCameraByMouseWheel(event);
199209
}
200210
}
201211

@@ -224,6 +234,15 @@ function moveCameraByMouseWheel(event: WheelEvent) {
224234
Camera.location = Camera.location.subtract(new Vector(0, (Camera.moveAmplitude * 50) / Camera.currentScale));
225235
}
226236
}
237+
function moveXCameraByMouseWheel(event: WheelEvent) {
238+
if (event.deltaY > 0) {
239+
// 向上滚动是左移
240+
Camera.location = Camera.location.add(new Vector((Camera.moveAmplitude * 50) / Camera.currentScale, 0));
241+
} else if (event.deltaY < 0) {
242+
// 向下滚动是右移
243+
Camera.location = Camera.location.add(new Vector((-Camera.moveAmplitude * 50) / Camera.currentScale, 0));
244+
}
245+
}
227246
/**
228247
* 如果使用了鼠标滚轮,则x或y的滚动必有一个接近100
229248
* @param event

app/src/core/stage/Camera.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ export namespace Camera {
8181
export let limitCameraInCycleSpace = false;
8282
export let cameraCycleSpaceSizeX = 1000;
8383
export let cameraCycleSpaceSizeY = 1000;
84-
export let mouseWheelMode: "zoom" | "move" = "zoom"; // zoom or move
85-
export let mouseWheelWithShiftMode: "zoom" | "move" = "zoom"; // zoom or move
86-
export let mouseWheelWithCtrlMode: "zoom" | "move" = "zoom"; // zoom or move
84+
export let mouseWheelMode: Settings.Settings["mouseWheelMode"] = "zoom";
85+
export let mouseWheelWithShiftMode: Settings.Settings["mouseWheelWithShiftMode"] = "zoom";
86+
export let mouseWheelWithCtrlMode: Settings.Settings["mouseWheelWithCtrlMode"] = "zoom";
8787
let cameraKeyboardScaleRate = 0.2;
8888

8989
// IDEA: 突然有一个好点子

app/src/locales/en.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,16 +374,19 @@ settings:
374374
options:
375375
zoom: zoom
376376
move: move
377+
moveX: move X
377378
mouseWheelWithShiftMode:
378379
title: mouse Wheel Mode When Press Shift
379380
options:
380381
zoom: zoom
381382
move: move
383+
moveX: move X
382384
mouseWheelWithCtrlMode:
383385
title: mouse Wheel Mode When Press Ctrl
384386
options:
385387
zoom: zoom
386388
move: move
389+
moveX: move X
387390
rectangleSelectWhenLeft:
388391
title: Strategy for Left Rectangle Selection
389392
description: |

app/src/locales/zh_CN.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,17 +360,20 @@ settings:
360360
title: 鼠标滚轮模式
361361
options:
362362
zoom: 缩放
363-
move: 移动
363+
move: 纵向移动
364+
moveX: 横向移动
364365
mouseWheelWithShiftMode:
365366
title: 按住Shift时,鼠标滚轮模式
366367
options:
367368
zoom: 缩放
368-
move: 移动
369+
move: 纵向移动
370+
moveX: 横向移动
369371
mouseWheelWithCtrlMode:
370372
title: 按住Ctrl时,鼠标滚轮模式
371373
options:
372374
zoom: 缩放
373-
move: 移动
375+
move: 纵向移动
376+
moveX: 横向移动
374377
rectangleSelectWhenLeft:
375378
title: 向左框选的策略
376379
description: |

app/src/locales/zh_TW.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -343,17 +343,20 @@ settings:
343343
title: 鼠标滚轮模式
344344
options:
345345
zoom: 缩放
346-
move: 移动
346+
move: 纵向移动
347+
moveX: 横向移动
347348
mouseWheelWithShiftMode:
348349
title: 按住Shift时,鼠标滚轮模式
349350
options:
350351
zoom: 缩放
351-
move: 移动
352+
move: 纵向移动
353+
moveX: 横向移动
352354
mouseWheelWithCtrlMode:
353355
title: 按住Ctrl时,鼠标滚轮模式
354356
options:
355357
zoom: 缩放
356-
move: 移动
358+
move: 纵向移动
359+
moveX: 横向移动
357360
rectangleSelectWhenLeft:
358361
title: 向左框选的策略
359362
description: |

0 commit comments

Comments
 (0)