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


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 相关文章推荐
取得一定长度的内容,处理中文
Dec 20 Javascript
jQuery Autocomplete自动完成插件
Jul 17 Javascript
javaScript NameSpace 简单说明介绍
Jul 18 Javascript
IE与FireFox的JavaScript兼容问题解决办法
Dec 31 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
浅谈Express异步进化史
Sep 09 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
Sep 22 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
angular2中Http请求原理与用法详解
Jan 11 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
Sep 26 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
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
简述JS控制台的使用
2018/07/15 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
python实现连接mongodb的方法
2015/05/08 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Python对excel文档的操作方法详解
2018/12/10 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
简单了解Django项目应用创建过程
2020/07/06 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
职工运动会邀请函
2014/01/19 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
区级文明单位申报材料
2014/05/15 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
2014年人大工作总结
2014/12/10 职场文书
初中作文评语
2014/12/25 职场文书
公司捐书倡议书
2015/04/27 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL