斯塔克闪电战 - https://stackblitz.com/edit/angular-touch-playground-pan-events https://stackblitz.com/edit/angular-touch-playground-pan-events
需要更改- 这里的关键是如果我这样做
(pan)="logPan(i)"
内td
那么无论 pan 事件都会记录相同的i
作为平底锅开始的地方。
而如果我这样做
(pan)="logPan($event)"
我可以访问$event
坐标(x, y)
via evt.center.x / evt.center.y
.
使用坐标- 转换坐标(x, y)
to the td
我关心我用过的元素从点 https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/elementFromPoint方法其中返回指定坐标处的最顶层元素(相对于视口)我添加了一个可访问属性id
每一个td
这样我就可以设置我的pressed
字典,正在记录td
感动。
logPan(evt: any) {
this.event += '\n Touch Pan: '+ `(${evt.center.x}, ${evt.center.y}, ${document.elementFromPoint(evt.center.x, evt.center.y).id})`
this.pressed[document.elementFromPoint(evt.center.x, evt.center.y).id]=1;
}
额外的- 平移似乎没有拾取手指第一次开始的位置,因此需要额外的(touchstart)="logTouchstart(i)"
是必须的。
Credit- 我在查看以下博客上的 Stackblitz 后发现了这一点:https://medium.com/angular-in-deep/gestures-in-an-angular-application-dde71804c0d0 https://medium.com/angular-in-depth/gestures-in-an-angular-application-dde71804c0d0