@@ -51,29 +51,28 @@ export default defineComponent({
5151 };
5252 const startX = ref <number >(0 );
5353 const startY = ref <number >(0 );
54- const startUpdatePos = ref (false );
54+ const startedDrag = ref (false );
5555 const transformX = ref (0 );
5656 const transformY = ref (0 );
5757 const preTransformX = ref (0 );
5858 const preTransformY = ref (0 );
59- let timeoutId;
59+ watch ([x , y ], () => {
60+ if (! startedDrag .value ) {
61+ startX .value = x .value ;
62+ startY .value = y .value ;
63+ preTransformX .value = transformX .value ;
64+ preTransformY .value = transformY .value ;
65+ }
66+ startedDrag .value = true ;
67+ });
6068 watch (isDragging , () => {
61- clearTimeout (timeoutId );
62- timeoutId = setTimeout (() => {
63- if (isDragging .value ) {
64- startX .value = x .value ;
65- startY .value = y .value ;
66- preTransformX .value = transformX .value ;
67- preTransformY .value = transformY .value ;
68- startUpdatePos .value = true ;
69- } else {
70- startUpdatePos .value = false ;
71- }
72- }, 50 );
69+ if (! isDragging ) {
70+ startedDrag .value = false ;
71+ }
7372 });
7473
7574 watchEffect (() => {
76- if (startUpdatePos .value ) {
75+ if (startedDrag .value ) {
7776 transformX .value = preTransformX .value + x .value - startX .value ;
7877 transformY .value = preTransformY .value + y .value - startY .value ;
7978 }
0 commit comments