43 lines
877 B
TypeScript
43 lines
877 B
TypeScript
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();
|
|
}
|