长按是一个手指的行动,须要检测屏幕上是否只有一个接触点。
起首,须要获取向量的扭转偏向和角度。
- //这两个办法属于向量计算,具体道理请浏览本文最后的参考文献
- _getRotateDirection(vector1,vector2) {
- return vector1.x * vector2.y - vector2.x * vector1.y;
- }
- _getRotateAngle(vector1,vector2) {
- let direction = this._getRotateDirection(vector1,vector2);
- direction = direction > 0 ? -1 : 1;
- let len1 = this._getDistance(vector1.x,vector1.y);
- let len2 = this._getDistance(vector2.x,vector2.y);
- let mr = len1 * len2;
- if(mr === 0) return 0;
- let dot = vector1.x * vector2.x + vector1.y * vector2.y;
- let r = dot / mr;
- if(r > 1) r = 1;
- if(r < -1) r = -1;
- return Math.acos(r) * direction * 180 / Math.PI;
- }
然后,我们在手指产生移动时,调用获取扭转偏向和角度的办法。
- _onTouchStart(e) {
- ...
- if(e.touches.length > 1) {
- this.touchVector = {
- x: point2.pageX - this.startX,
- y: point2.pageY - this.startY
- };
- }
- ...
- }
- _onTouchMove(e) {
- ...
- if(this.touchVector) {
- let vector = {
- x: e.touches[1].pageX - e.touches[0].pageX,
- y: e.touches[1].pageY - e.touches[0].pageY
- };
- let angle = this._getRotateAngle(vector,this.touchVector);
- this._emitEvent('onRotate',{
- angle
- });
推荐阅读
Siri有了更多的新机能,经由过程分享社交账号QR码获得更活泼的形象,以及它可以吹奏DJ。以下是对iOS 11中Siri的所有操作方法的总结:1.跨设备同步经由过程iOS 11体系,Siri可以总结并适应>>>详细阅读
本文标题:HTML5手势检测原理和实现
地址:http://www.17bianji.com/lsqh/37633.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示