【JavaScript】关于手机中的触摸手势操作实现过程详解

这里实现触摸手势操作的有四个基本方向:上,下,左,右,用javascript语言编写,可以参考下

  1. 笔者TA远方在一个文件名为gesture.js写了, 定义触摸操作中的所有手势,一共8个总方向,包括四个基本方向,还有一个点击,代码如下
const G = {
	left: 'LEFT',
	right: 'RIGHT',
	down: 'DOWN',
	up: 'UP',
	click: 'CLICK',
	leftAndUp: 'LEFT_UP',
	leftAndDown: 'LEFT_DOWN',
	rightAndUp: 'RIGHT_UP',
	rightAndDown: 'RIGHT_DOWN',
}
  1. 触摸操作中,除了点击,常见的是通过计算两点不同的位置,一个是触摸开始点a,另一个是触摸结束点b,就能算出手势操作,实现方法getG如下
const getG = (g) => {
	const { a, b } = g;//两点
	if (a!=null && b!=null){
		//offX,Y 相差值
		const offX = a.x-b.x;
		const offY = a.y-b.y;
		//absX,Y 绝对值
		const absX = Math.abs(offX);
		const absY = Math.abs(offY);
		//是否上下移动
		if (absX < absY) {
			if (a.y > b.y) {
				return G.up;//向上移
			} else {
				return G.down;//向下移
			}
		} //是否左右移动
		else if (absX > absY) {
			if (a.x > b.x) {
				return G.left;//向左
			} else {
				return G.right;//向右
			}
		} else {
			//绝对值不为0,两个方向垂直之间的夹角方向移动
			if (absX!=0){
				if (offX>0) {
					if (offY>0) {
						return G.leftAndUp;//向左上方向移
					} else {
						return G.leftAndDown;
					}
				} else {
					if (offY>0) {
						return G.rightAndUp;//向右上方向移
					} else {
						return G.rightAndDown;
					}
				}
			}
		}
	}
	return G.click;//点击操作
}
  1. 最后讲下使用例子,在小程序中的canvas组件中使用触摸事件,实现手势的控制操作,代码如下
import Gesture from '@/common/js/gesture.js';
App({
	data: {
		gestures: {},
	},
	onTouchStart(event){
		this.gestures.a = event.touches[0];
	},
	onTouchMove(event){
		this.gestures.b = event.touches[0];
	},
	onTouchEnd(){
		const g = Gesture.getG(this.gestures);
		this.ctrlMove(g);
		this.gestures = {};
	},
	ctrlMove(g){
		const Ges = Gesture.G;
		//...控制移动
		switch(g){
			case Ges.left:
				//...
				break;
			//...
		}
	}
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TA远方

谢谢!收到你的爱╮(╯▽╰)╭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值