微信小程序手势操作之单触摸点与多触摸点


Posted in Javascript onMarch 10, 2017

前言

手势对于一些效果是比较重要的,在canvas、交互等中应用非常广,看一下微信小程序手势是如何的。

Demo

为了研究小程序是否支持多手指,需要使用touchstart,touchmove,touchend

// index.wxml
<view id="gestureView" bindtouchstart="touchstartFn" bindtouchmove="touchmoveFn" bindtouchend="touchendFn" >
</view>
//index.js
touchstartFn: function(event){
  console.log(event);
 },
 touchmoveFn: function(event){
  console.log(event);
  // console.log("move: PageX:"+ event.changedTouches[0].pageX);
 },
 touchendFn: function(event){
  console.log(event);
  // console.log("move: PageX:"+ event.changedTouches[0].pageX);
 }

单触摸点,多触摸点

官方文档:changedTouches

changedTouches 数据格式同 touches。 表示有变化的触摸点,如从无变有(touchstart),位置变化(touchmove),从有变无(touchend、touchcancel)。

"changedTouches":[{ 
"identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14
}]

真机效果

实现以上Demo后模拟器是无法看到多触摸点的数据的,所以你需要真机来测试。

看下真机的log信息

微信小程序手势操作之单触摸点与多触摸点

在changedTouches中按顺序保存触摸点的数据,所以小程序本身支持多触摸点的手势

结论

设想: 既然小程序的手势是支持多触摸,而且可以获取到相关的路径,那么相关路径计算也是可行的。

场景: 多触摸交互效果,手指绘制等

触摸点数据保存

为了能够来分析触摸点的路径,最起码是简单的手势,如左滑、右滑、上滑、下滑,我们需要保存起路径的所有数据。

触摸事件

触摸触发事件分为"touchstart", "touchmove", "touchend","touchcancel"四个

详见:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/event.html20

存储数据

var _wxChanges = [];
var _wxGestureDone = false;
const _wxGestureStatus = ["touchstart", "touchmove", "touchend","touchcancel"];
// 收集路径
function g(e){
  if(e.type === "touchstart"){
    _wxChanges = [];
    _wxGestureDone = false;
  }
  if(!_wxGestureDone){
    _wxChanges.push(e);
    if(e.type === "touchend"){
      _wxGestureDone = true; 
    }else if(e.type === "touchcancel"){
      _wxChanges = [];
      _wxGestureDone = true; 
    }
  }
}

结尾

这篇文章,主要探索一下,希望你也可以提前看一下手势的解析。

Javascript 相关文章推荐
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
Jan 12 Javascript
在其他地方你学不到的jQuery小贴士和技巧(欢迎收藏)
Jan 20 Javascript
AngularJS使用ng-options指令实现下拉框
Aug 23 Javascript
Vue中使用vux的配置详解
May 05 Javascript
jQuery实现可拖动进度条实例代码
Jun 21 jQuery
VUE前后端学习tab写法实例
Aug 06 Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
解析原生JS getComputedStyle
May 25 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 #Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 #Javascript
jQuery实现扑克正反面翻牌效果
Mar 10 #Javascript
AngularJS之页面跳转Route实例代码
Mar 10 #Javascript
Angular多选、全选、批量选择操作实例代码
Mar 10 #Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
Mar 10 #Javascript
Vue.js之slot深度复制详解
Mar 10 #Javascript
You might like
php格式化金额函数分享
2015/02/02 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python实现连连看游戏
2020/02/14 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
2021/02/16 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
外国人聘用意向书
2014/04/01 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
教师学期个人总结
2015/02/11 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2015年国庆节寄语
2015/08/17 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
python用tkinter开发的扫雷游戏
2021/06/01 Python
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python