// 使用 `export` 关键字将名为 `touch` 的变量作为模块的导出项,这样其他模块就能引入并使用它。 // `touch` 被赋值为通过 `Behavior` 函数创建的一个行为对象,在微信小程序等框架里,行为对象可被组件引入,以复用其中定义的方法等内容,进而实现相应的触摸交互相关功能。 export const touch = Behavior({ // `methods` 属性用于定义该行为对象中包含的一系列方法,这些方法可被使用了这个行为的组件所调用,用于处理触摸相关的事件逻辑。 methods: { // 定义名为 `touchStart` 的方法,它接收一个 `event` 参数,该参数包含了触摸开始事件触发时微信小程序传递过来的相关信息。 // 这个方法通常在触摸操作刚开始时被调用,用于初始化一些与触摸操作相关的变量,以便后续在触摸移动等过程中进行计算和判断。 touchStart(event) { // 从 `event.touches` 数组中获取第一个触摸点的信息(一般在单指触摸情况下就是当前触摸点),并赋值给 `touch` 变量,方便后续获取触摸点的坐标等属性。 const touch = event.touches[0]; // 初始化 `direction` 属性为空字符串,表示触摸滑动方向尚未确定,后续会根据触摸移动情况来更新这个值,用于判断是水平滑动还是垂直滑动等情况。 this.direction = ''; // 将 `deltaX`(触摸点在 X 轴方向的偏移量)初始化为 0,后续在触摸移动过程中会根据触摸点位置变化来更新该值。 this.deltaX = 0; // 将 `deltaY`(触摸点在 Y 轴方向的偏移量)初始化为 0,同样会在触摸移动时根据实际情况进行更新。 this.deltaY = 0; // 将 `offsetX`(触摸点在 X 轴方向相对起始位置的偏移绝对值)初始化为 0,用于记录触摸移动过程中的偏移情况,方便后续判断滑动方向等操作。 this.offsetX = 0; // 将 `offsetY`(触摸点在 Y 轴方向相对起始位置的偏移绝对值)初始化为 0,作用与 `offsetX` 类似,用于触摸移动相关的逻辑处理。 this.offsetY = 0; // 获取触摸开始时触摸点的 X 轴坐标(相对于浏览器客户端窗口左上角的位置),并赋值给 `startX` 属性,用于后续计算触摸点在 X 轴方向的偏移量等操作。 this.startX = touch.clientX; // 获取触摸开始时触摸点的 Y 轴坐标(相对于浏览器客户端窗口左上角的位置),并赋值给 `startY` 属性,用于后续计算触摸点在 Y 轴方向的偏移量等操作。 this.startY = touch.clientY; }, // 定义名为 `touchMove` 的方法,同样接收 `event` 参数,该方法会在触摸点在屏幕上移动时被触发,用于实时更新与触摸移动相关的变量,以判断触摸滑动的方向等信息。 touchMove(event) { // 从 `event.touches` 数组中获取当前第一个触摸点的信息(单指触摸时的当前触摸点),赋值给 `touch` 变量,以便获取当前触摸点的坐标。 const touch = event.touches[0]; // 计算触摸点在 X 轴方向相对于触摸开始时的偏移量,通过当前触摸点的 X 轴坐标减去触摸开始时的 `startX` 值来得到,并更新 `deltaX` 属性。 this.deltaX = touch.clientX - this.startX; // 计算触摸点在 Y 轴方向相对于触摸开始时的偏移量,用当前触摸点的 Y 轴坐标减去触摸开始时的 `startY` 值,然后更新 `deltaY` 属性。 this.deltaY = touch.clientY - this.startY; // 计算触摸点在 X 轴方向相对于起始位置的偏移绝对值,使用 `Math.abs` 函数获取 `deltaX` 的绝对值,并赋值给 `offsetX` 属性,这有助于后续比较 X 轴和 Y 轴方向的偏移情况来判断滑动方向。 this.offsetX = Math.abs(this.deltaX); // 计算触摸点在 Y 轴方向相对于起始位置的偏移绝对值,通过 `Math.abs` 函数获取 `deltaY` 的绝对值,将结果赋值给 `offsetY` 属性,同样用于滑动方向的判断等逻辑。 this.offsetY = Math.abs(this.deltaY); // 根据 `offsetX` 和 `offsetY` 的大小关系来确定触摸滑动的方向,将结果赋值给 `direction` 属性。 // 如果 `offsetX`(X 轴方向偏移绝对值)大于 `offsetY`(Y 轴方向偏移绝对值),说明触摸滑动更偏向水平方向,将 `direction` 设置为 `'horizontal'`; // 如果 `offsetX` 小于 `offsetY`,表明触摸滑动更偏向垂直方向,把 `direction` 设置为 `'vertical'`; // 如果 `offsetX` 和 `offsetY` 相等,意味着滑动方向不太明确或者没有明显的水平或垂直偏向,将 `direction` 设置为空字符串 `''`。 this.direction = this.offsetX > this.offsetY ? 'horizontal' : this.offsetX < this.offsetY ? 'vertical' : ''; } } });