From aab2a2d384955fa12a0c03a903ee06d0999f171f Mon Sep 17 00:00:00 2001 From: qiang Date: Sat, 30 Mar 2019 12:56:49 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=20canvas=20=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=20touch=20=E4=BA=8B=E4=BB=B6=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=BF=94=E5=9B=9E=20x=E3=80=81y=20=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/view/components/canvas/index.vue | 40 +++++++++++++++++++---- src/core/view/plugins/events.js | 5 +-- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/core/view/components/canvas/index.vue b/src/core/view/components/canvas/index.vue index 50212e8ad..ec7db333b 100644 --- a/src/core/view/components/canvas/index.vue +++ b/src/core/view/components/canvas/index.vue @@ -2,9 +2,7 @@ + v-on="_listeners"> { + var boundingClientRect = target.getBoundingClientRect() + return { + identifier: touche.identifier, + x: touche.clientX - boundingClientRect.x, + y: touche.clientY - boundingClientRect.y + } + }) +} + export default { name: 'Canvas', mixins: [subscriber], @@ -49,6 +58,27 @@ export default { computed: { id () { return this.canvasId + }, + _listeners () { + var $listeners = Object.assign({}, this.$listeners) + var events = ['touchstart', 'touchmove', 'touchend'] + events.forEach(event => { + var existing = $listeners[event] + var eventHandler = [] + if (existing) { + eventHandler.push(($event) => { + this.$trigger(event, Object.assign({}, $event, { + touches: processTouches($event.currentTarget, $event.touches), + changedTouches: processTouches($event.currentTarget, $event.changedTouches) + })) + }) + } + if (this.disableScroll && event === 'touchmove') { + eventHandler.push(this._touchmove) + } + $listeners[event] = eventHandler + }) + return $listeners } }, created () { @@ -79,9 +109,7 @@ export default { } }, _touchmove (event) { - if (this.disableScroll) { - event.preventDefault() - } + event.preventDefault() }, actionsChanged ({ actions, diff --git a/src/core/view/plugins/events.js b/src/core/view/plugins/events.js index 3bb6f28da..baaa5fdbb 100644 --- a/src/core/view/plugins/events.js +++ b/src/core/view/plugins/events.js @@ -82,8 +82,9 @@ export function processEvent (name, $event = {}, detail = {}, target = {}, curre detail: detail, target: processTarget(target, detail), currentTarget: processTarget(currentTarget), - touches: processTouches($event.touches), - changedTouches: processTouches($event.changedTouches), + // 只处理系统事件 + touches: $event instanceof Event ? processTouches($event.touches) : $event.touches, + changedTouches: $event instanceof Event ? processTouches($event.changedTouches) : $event.changedTouches, preventDefault () { }, stopPropagation () { } }) -- GitLab