| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- export class Touch {
- // 触摸起始Y坐标
- startY = 0;
- // 触摸起始X坐标
- startX = 0;
- // 横向滑动参数
- horizontal = 0;
- start(e: UniTouchEvent) {
- this.startX = e.touches[0].clientX;
- this.startY = e.touches[0].clientY;
- this.horizontal = 0;
- }
- move(e: UniTouchEvent) {
- const x = this.startX - e.touches[0].clientX;
- if (this.horizontal == 0) {
- // 只在horizontal=0时判断一次
- const y = this.startY - e.touches[0].clientY;
- if (Math.abs(x) > Math.abs(y)) {
- // 如果x轴移动距离大于y轴移动距离则表明是横向移动手势
- this.horizontal = 1;
- }
- if (this.horizontal == 1) {
- // 如果是横向移动手势,则阻止默认行为(防止页面滚动)
- e.preventDefault();
- }
- }
- }
- end() {
- this.startY = 0;
- this.horizontal = 0;
- }
- }
- export function useTouch(): Touch {
- return new Touch();
- }
|