Skip to content

Commit 187abe7

Browse files
author
Yan Heng
committed
feat: 增加图形变化事件
1 parent 6426b4e commit 187abe7

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

packages/core/src/services/selector.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ export class Selector extends Service {
7171
});
7272
this.optionLayer.add(this.rubberRect);
7373

74+
this.transformer.on<'transformstart'>('transformstart', this.onTransformStart);
75+
this.transformer.on<'transformend'>('transformend', this.onTransformEnd);
76+
this.transformer.on<'dragstart'>('dragstart', this.onDragStart);
77+
this.transformer.on<'dragend'>('dragend', this.onDragEnd);
78+
7479
this.app.on('mouse:down', this.onMouseDown);
7580
this.app.on('mouse:move', this.onMouseMove);
7681
this.app.on('mouse:up', this.onMouseUp);
@@ -117,6 +122,22 @@ export class Selector extends Service {
117122
return this.selected.has(child._id);
118123
}
119124

125+
private onTransformStart = (): void => {
126+
this.app.emit('shape:transform:start', { object: [...this.selected.values()] });
127+
};
128+
129+
private onTransformEnd = (): void => {
130+
this.app.emit('shape:transform:end', { object: [...this.selected.values()] });
131+
};
132+
133+
private onDragStart = (): void => {
134+
this.app.emit('shape:transform:start', { object: [...this.selected.values()] });
135+
};
136+
137+
private onDragEnd = (): void => {
138+
this.app.emit('shape:transform:end', { object: [...this.selected.values()] });
139+
};
140+
120141
private onMouseDown = ({ event }: EventArgs['mouse:down']): void => {
121142
if (!this.enable) {
122143
return;
@@ -178,6 +199,10 @@ export class Selector extends Service {
178199
};
179200

180201
public dispose(): void {
202+
this.transformer.off('transformstart', this.onTransformStart);
203+
this.transformer.off('transformend', this.onTransformEnd);
204+
this.transformer.off('dragstart', this.onDragStart);
205+
this.transformer.off('dragend', this.onDragEnd);
181206
this.app.off('mouse:down', this.onMouseDown);
182207
this.app.off('mouse:move', this.onMouseMove);
183208
this.app.off('mouse:up', this.onMouseUp);

packages/core/src/types.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Konva from 'konva';
33
import App from './app';
44

55
export type KonvaMouseEvent = Konva.KonvaEventObject<MouseEvent>;
6+
export type KonvaDragEvent = Konva.KonvaEventObject<DragEvent>;
67
export type Shape = Konva.Shape;
78
export type ChildType = Konva.Group | Konva.Shape;
89

@@ -56,6 +57,12 @@ export interface EventArgs {
5657
'shape:removed': {
5758
object: ChildType[];
5859
};
60+
'shape:transform:start': {
61+
object: ChildType[];
62+
};
63+
'shape:transform:end': {
64+
object: ChildType[];
65+
};
5966
'mouse:down': {
6067
event: KonvaMouseEvent;
6168
};

0 commit comments

Comments
 (0)