作家
登录

HTML5手势检测原理和实现

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

'onLongPress');  
  • });  
  •  
  •  
  • _onTouchMove(e) {  
  • ...  
  • clearTimeout(this.longPressTimeout);  
  • ... 
  •   
  • _onTouchEnd(e) {  
  • ...  
  • clearTimeout(this.longPressTimeout);  
  • ...  
  • 缩放(pinch)

    缩放是一个异常有趣的手势,还记得第一代iPhone双指缩放图片给你带来的┞佛撼吗?固然如斯,缩放手势的检测却相对简单。

    缩放是两个手指的行动,须要检测屏幕上是否有两个接触点。

    缩放比例的量化,是经由过程两次缩放行动之间的距离的比值获得,如下图。

    HTML5手势检测道理和实现

    所以缩放的核心是获取两个接触点之间的直线距离。

    1. _onTouchStart(e) {  
    2. if(e.touches.length > 1) {  
    3. let point1 = e.touches[0];  
    4. let point2 = e.touches[1];  
    5. let xLen = Math.abs(point2.pageX - point1.pageX);  
    6. let yLen = Math.abs(point2.pageY - point1.pageY);  
    7. this.touchDistance = this._getDistance(xLen, yLen); 
    8.  else {  
    9. ...  
    10.  

    在_onTouchStart函数中获取并且保存 touchstart 产生时两个接触点之间的距离。

    1. _onTouchMove(e) {  
    2. if(e.touches.length > 1) {  
    3. let xLen = Math.abs(e.touches[0].pageX - e.touches[1].pageX);  
    4. let yLen = Math.abs(e.touches[1].pageY - e.touches[1].pageY); 
    5.  let touchDistance = this._getDistance(xLen,yLen);  
    6. if(this.touchDistance) {  
    7. let pinchScale = touchDistance / this.touchDistance; 
    8.  this._emitEvent('onPinch',{scale:pinchScale - this.previousPinchScale});  
    9. this.previousPinchScale = pinchScale;  
    10.  }else {  
    11. ...  
    12.  

    扭转(rotate)

    扭转手势须要检测两个比较重要的值,一是扭转的角度,二是扭转的偏向(顺时针或逆时针)。

    个中扭转角度和偏向的枷⒚须要经由过程向量的计算来获取,本文不再展开。

    HTML5手势检测道理和实现

    1. //勾股定理  
    2. _getDistance(xLen,yLen) {  

        推荐阅读

        还可以这么玩:盘点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)