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


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 相关文章推荐
Js判断参数(String,Array,Object)是否为undefined或者值为空
Nov 04 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
Dec 01 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
微信公众平台开发教程(五)详解自定义菜单
Dec 02 Javascript
jQuery模拟下拉框选择对应菜单的内容
Mar 07 Javascript
vue2.0中goods选购栏滚动算法的实现代码
May 17 Javascript
JavaScript学习笔记之函数记忆
Sep 06 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
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+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
json 实例详细说明教程
2009/10/31 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
javascript实现日历效果
2019/06/17 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
python映射列表实例分析
2015/01/26 Python
解析Python中的二进制位运算符
2015/05/13 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
实习生个人找工作的自我评价
2013/10/30 职场文书
儿媳婚宴答谢词
2014/01/14 职场文书
学校春季防火方案
2014/06/08 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
安全温馨提示语大全
2015/07/14 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python