From e07b81c4c9b9dd714e58f7ab9e63f2fe6e8fd829 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Thu, 21 Jul 2022 15:15:58 +0800 Subject: [PATCH] fix(canvas): pass original touch event --- .../uni-components/src/vue/canvas/index.tsx | 38 ++++--------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/packages/uni-components/src/vue/canvas/index.tsx b/packages/uni-components/src/vue/canvas/index.tsx index 87d28e4ad..ea48ef238 100644 --- a/packages/uni-components/src/vue/canvas/index.tsx +++ b/packages/uni-components/src/vue/canvas/index.tsx @@ -35,15 +35,10 @@ function resolveColor(color: number[]) { return 'rgba(' + color.join(',') + ')' } -function processTouches(target: EventTarget, touches: TouchEvent['touches']) { - const eventTarget = target as HTMLElement - let boundingClientRect = eventTarget.getBoundingClientRect() - return Array.from(touches).map((touch) => { - return { - identifier: touch.identifier, - x: touch.clientX - boundingClientRect.left, - y: touch.clientY - boundingClientRect.top, - } +function processTouches(rect: DOMRect, touches: TouchEvent['touches']) { + Array.from(touches).forEach((touch) => { + ;(touch as any).x = touch.clientX - rect.left + ;(touch as any).y = touch.clientY - rect.top }) } @@ -172,27 +167,10 @@ function useListeners( if (existing) { eventHandler.push( withWebEvent(($event) => { - trigger( - event.replace('on', '').toLocaleLowerCase(), - extend( - {}, - // $event无法直接assign - (() => { - let obj = {} - for (const key in $event) { - ;(obj as any)[key] = $event[key] - } - return obj - })(), - { - touches: processTouches($event.currentTarget, $event.touches), - changedTouches: processTouches( - $event.currentTarget, - $event.changedTouches - ), - } - ) as unknown as Event - ) + const rect = $event.currentTarget.getBoundingClientRect() + processTouches(rect, $event.touches) + processTouches(rect, $event.changedTouches) + trigger(event.replace('on', '').toLocaleLowerCase(), $event) }) ) } -- GitLab