笔记:移动端 touch 事件 - 模拟 swipe 的实现 - 1. 判定为 swipe 事件的伪代码 Raw
// 用于记录触摸点开始接触屏幕,和离开屏幕的缓存
let startPos = {x: 0, y: 0}
, endPos = {x: 0, y: 0};
// 记录手指接触到屏幕上时,触摸点的位置
layer.addEventListener('touchstart', function (e) {
startPos = {x: e.changeTouches[0].pageX, y: e.changeTouches[0].pageY};
});
// 手指在屏幕上移动时,持续记录,
// 离开之前记录下的最一个 move 信息,即为离开时的触摸点的位置
layer.addEventListener('touchmove', function (e) {
endPos = {x: e.changeTouches[0].pageX, y: e.changeTouches[0].pageY};
});
layer.addEventListener('touchend', function (e) {
// x、y 轴的位移绝对值
let disX = Math.abs(endPos.x - startPos.x)
, disY = Math.abs(endPos.y - startPos.y);
// x、y 轴的位移绝对值任何一个超过 30 像素的移动,判定为 swipe
if (Math.max(disX, disY) > 30) {
// 做剩余对 swipe 方向的判断
// ...
}
});