绘制形状
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { isBoolean } from "lodash-es";
|
||||
import { OperationType, OperationTypes } from "../../tools/layerHelper";
|
||||
import { RectToolManager } from "../RectToolManager"
|
||||
import { ShapeToolManager } from "../ShapeToolManager"
|
||||
import { AISelectboxToolManager } from "../AISelectboxToolManager"
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ export class CanvasEventManager {
|
||||
toolManager: this.toolManager,
|
||||
layerManager: this.layerManager,
|
||||
}
|
||||
this.rectToolManager = new RectToolManager(managers)
|
||||
this.shapeToolManager = new ShapeToolManager(managers)
|
||||
this.aiSelectboxToolManager = new AISelectboxToolManager(managers)
|
||||
|
||||
// 初始化所有事件
|
||||
@@ -209,9 +209,9 @@ export class CanvasEventManager {
|
||||
} else if (currentTool === OperationType.SELECTBOX) {
|
||||
// 选择框模式
|
||||
this.aiSelectboxToolManager.mouseDownEvent(opt);
|
||||
} else if (currentTool === OperationType.RECTANGLE) {
|
||||
// 矩形模式
|
||||
this.rectToolManager.mouseDownEvent(opt);
|
||||
} else if (this.shapeToolManager.tools.includes(currentTool)) {
|
||||
// 形状模式
|
||||
this.shapeToolManager.mouseDownEvent(opt);
|
||||
} else if (opt.e.altKey || opt.e.which === 2 || currentTool === OperationType.PAN) {
|
||||
this.canvas.isDragging = true;
|
||||
this.canvas.lastPosX = opt.e.clientX;
|
||||
@@ -237,9 +237,9 @@ export class CanvasEventManager {
|
||||
} else if (currentTool === OperationType.SELECTBOX) {
|
||||
// 选择框模式
|
||||
this.aiSelectboxToolManager.mouseMoveEvent(opt);
|
||||
} else if (currentTool === OperationType.RECTANGLE) {
|
||||
// 矩形模式
|
||||
this.rectToolManager.mouseMoveEvent(opt);
|
||||
} else if (this.shapeToolManager.tools.includes(currentTool)) {
|
||||
// 形状模式
|
||||
this.shapeToolManager.mouseMoveEvent(opt);
|
||||
} else if (this.canvas.isDragging) {
|
||||
const vpt = this.canvas.viewportTransform;
|
||||
vpt[4] += opt.e.clientX - this.canvas.lastPosX;
|
||||
@@ -321,9 +321,9 @@ export class CanvasEventManager {
|
||||
} else if (currentTool === OperationType.SELECTBOX) {
|
||||
// 选择框模式
|
||||
this.aiSelectboxToolManager.mouseUpEvent(opt);
|
||||
} else if (currentTool === OperationType.RECTANGLE) {
|
||||
// 矩形模式
|
||||
this.rectToolManager.mouseDownEvent(opt);
|
||||
} else if (this.shapeToolManager.tools.includes(currentTool)) {
|
||||
// 形状模式
|
||||
this.shapeToolManager.mouseDownEvent(opt);
|
||||
} else if (currentTool === OperationType.PAN) {
|
||||
|
||||
// 平滑停止任何正在进行的惯性动画
|
||||
@@ -386,9 +386,9 @@ export class CanvasEventManager {
|
||||
} else if (currentTool === OperationType.SELECTBOX) {
|
||||
// 选择框模式
|
||||
this.aiSelectboxToolManager.mouseMoveEvent(opt);
|
||||
} else if (currentTool === OperationType.RECTANGLE) {
|
||||
// 矩形模式
|
||||
this.rectToolManager.mouseMoveEvent(opt);
|
||||
} else if (this.shapeToolManager.tools.includes(currentTool)) {
|
||||
// 形状模式
|
||||
this.shapeToolManager.mouseMoveEvent(opt);
|
||||
} else if (currentTool === OperationType.PAN) {
|
||||
|
||||
// 检查是否是触摸事件
|
||||
@@ -496,9 +496,9 @@ export class CanvasEventManager {
|
||||
} else if (currentTool === OperationType.SELECTBOX) {
|
||||
// 选择框模式
|
||||
this.aiSelectboxToolManager.mouseUpEvent(opt);
|
||||
} else if (currentTool === OperationType.RECTANGLE) {
|
||||
// 矩形模式
|
||||
this.rectToolManager.mouseUpEvent(opt);
|
||||
} else if (this.shapeToolManager.tools.includes(currentTool)) {
|
||||
// 形状模式
|
||||
this.shapeToolManager.mouseUpEvent(opt);
|
||||
} else if (currentTool === OperationType.PAN) {
|
||||
|
||||
// 重置触摸状态
|
||||
@@ -668,9 +668,9 @@ export class CanvasEventManager {
|
||||
} else if (currentTool === OperationType.SELECTBOX) {
|
||||
// 选择框模式
|
||||
this.aiSelectboxToolManager.mouseUpEvent(opt);
|
||||
} else if (currentTool === OperationType.RECTANGLE) {
|
||||
// 矩形模式
|
||||
this.rectToolManager.mouseUpEvent(opt);
|
||||
} else if (this.shapeToolManager.tools.includes(currentTool)) {
|
||||
// 形状模式
|
||||
this.shapeToolManager.mouseUpEvent(opt);
|
||||
} else if (this.canvas.isDragging) {
|
||||
// if (this.lastMousePositions.length > 1 && opt && opt.e) {
|
||||
// this.animationManager.applyInertiaEffect(
|
||||
@@ -1074,7 +1074,7 @@ export class CanvasEventManager {
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.rectToolManager?.dispose()
|
||||
this.shapeToolManager?.dispose()
|
||||
this.aiSelectboxToolManager?.dispose()
|
||||
// 移除所有事件监听
|
||||
this.canvas.off();
|
||||
|
||||
@@ -9,13 +9,14 @@ export class KeyEventManager {
|
||||
/** 处理键盘事件 */
|
||||
_handleKeyDown: any
|
||||
handleKeyDown(event: any) {
|
||||
const activeID = this.stateManager.layerManager.activeID.value
|
||||
const ctrl = event.ctrlKey ? 'ctrl-' : "";
|
||||
const shift = event.shiftKey ? 'shift-' : "";
|
||||
const key = event.key;
|
||||
const reg = new RegExp(`^${ctrl}${shift}${key}$`, 'i')
|
||||
const list = [
|
||||
// { key: "ctrl-c", handler: () => this.handleCopy(event) },
|
||||
// { key: "delete", handler: () => this.handleDelete(event) },
|
||||
{ key: "ctrl-c", handler: () => this.stateManager.layerManager.copyLayerById(activeID) },
|
||||
{ key: "delete", handler: () => this.stateManager.layerManager.deleteLayerById(activeID) },
|
||||
{ key: "ctrl-z", handler: () => this.stateManager.undoState() },
|
||||
{ key: "ctrl-shift-z", handler: () => this.stateManager.redoState() },
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user