New file |
| | |
| | | const MIN_DISTANCE = 10 |
| | | |
| | | function getDirection(x, y) { |
| | | if (x > y && x > MIN_DISTANCE) { |
| | | return 'horizontal' |
| | | } |
| | | if (y > x && y > MIN_DISTANCE) { |
| | | return 'vertical' |
| | | } |
| | | return '' |
| | | } |
| | | |
| | | export default { |
| | | methods: { |
| | | getTouchPoint(e) { |
| | | if (!e) { |
| | | return { |
| | | x: 0, |
| | | y: 0 |
| | | } |
| | | } if (e.touches && e.touches[0]) { |
| | | return { |
| | | x: e.touches[0].pageX, |
| | | y: e.touches[0].pageY |
| | | } |
| | | } if (e.changedTouches && e.changedTouches[0]) { |
| | | return { |
| | | x: e.changedTouches[0].pageX, |
| | | y: e.changedTouches[0].pageY |
| | | } |
| | | } |
| | | return { |
| | | x: e.clientX || 0, |
| | | y: e.clientY || 0 |
| | | } |
| | | }, |
| | | resetTouchStatus() { |
| | | this.direction = '' |
| | | this.deltaX = 0 |
| | | this.deltaY = 0 |
| | | this.offsetX = 0 |
| | | this.offsetY = 0 |
| | | }, |
| | | touchStart(event) { |
| | | this.resetTouchStatus() |
| | | const touch = this.getTouchPoint(event) |
| | | this.startX = touch.x |
| | | this.startY = touch.y |
| | | }, |
| | | touchMove(event) { |
| | | const touch = this.getTouchPoint(event) |
| | | this.deltaX = touch.x - this.startX |
| | | this.deltaY = touch.y - this.startY |
| | | this.offsetX = Math.abs(this.deltaX) |
| | | this.offsetY = Math.abs(this.deltaY) |
| | | this.direction = this.direction || getDirection(this.offsetX, this.offsetY) |
| | | } |
| | | } |
| | | } |