作家
登录

HTML5手势检测原理和实现

作者: 来源: 2017-09-28 09:37:42 阅读 我要评论

  • return Math.sqrt(xLen * xLen + yLen * yLen);  
  • 长按是一个手指的行动,须要检测屏幕上是否只有一个接触点。

    起首,须要获取向量的扭转偏向和角度。

    1. //这两个办法属于向量计算,具体道理请浏览本文最后的参考文献  
    2. _getRotateDirection(vector1,vector2) { 
    3.  return vector1.x * vector2.y - vector2.x * vector1.y;  
    4.  
    5. _getRotateAngle(vector1,vector2) {  
    6. let direction = this._getRotateDirection(vector1,vector2);  
    7. direction = direction > 0 ? -1 : 1;  
    8. let len1 = this._getDistance(vector1.x,vector1.y);  
    9. let len2 = this._getDistance(vector2.x,vector2.y);  
    10. let mr = len1 * len2;  
    11. if(mr === 0) return 0;  
    12. let dot = vector1.x * vector2.x + vector1.y * vector2.y;  
    13. let r = dot / mr;  
    14. if(r > 1) r = 1;  
    15. if(r < -1) r = -1;  
    16. return Math.acos(r) * direction * 180 / Math.PI;  

    然后,我们在手指产生移动时,调用获取扭转偏向和角度的办法。

    1. _onTouchStart(e) {  
    2.   ...    
    3.   if(e.touches.length > 1) {  
    4.     this.touchVector = {  
    5.        x: point2.pageX - this.startX,  
    6.        y: point2.pageY - this.startY  
    7.      };  
    8.   }  
    9.   ...  
    10.  
    11. _onTouchMove(e) {  
    12.   ...  
    13.   if(this.touchVector) {  
    14.         let vector = {  
    15.           x: e.touches[1].pageX - e.touches[0].pageX, 
    16.            y: e.touches[1].pageY - e.touches[0].pageY  
    17.         };  
    18.         let angle = this._getRotateAngle(vector,this.touchVector);  
    19.         this._emitEvent('onRotate',{  
    20.           angle  
    21.         }); 

        推荐阅读

        还可以这么玩:盘点iOS 11中Siri的12项新功能

      Siri有了更多的新机能,经由过程分享社交账号QR码获得更活泼的形象,以及它可以吹奏DJ。以下是对iOS 11中Siri的所有操作方法的总结:1.跨设备同步经由过程iOS 11体系,Siri可以总结并适应>>>详细阅读


      本文标题:HTML5手势检测原理和实现

      地址:http://www.17bianji.com/lsqh/37633.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)