city-casereport/miniprogram_npm/tdesign-miniprogram/mixins/touch.js
2023-12-06 14:22:42 +08:00

36 lines
1021 B
JavaScript

const MinDistance = 10;
const getDirection = (x, y) => {
if (x > y && x > MinDistance) {
return 'horizontal';
}
if (y > x && y > MinDistance) {
return 'vertical';
}
return '';
};
export default Behavior({
methods: {
resetTouchStatus() {
this.direction = '';
this.deltaX = 0;
this.deltaY = 0;
this.offsetX = 0;
this.offsetY = 0;
},
touchStart(event) {
this.resetTouchStatus();
const [touch] = event.touches;
this.startX = touch.clientX;
this.startY = touch.clientY;
},
touchMove(event) {
const [touch] = event.touches;
this.deltaX = touch.clientX - this.startX;
this.deltaY = touch.clientY - this.startY;
this.offsetX = Math.abs(this.deltaX);
this.offsetY = Math.abs(this.deltaY);
this.direction = getDirection(this.offsetX, this.offsetY);
},
},
});