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


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 相关文章推荐
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 Javascript
AngularJS中比较两个数组是否相同
Aug 24 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
Aug 04 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
Vuepress 搭建带评论功能的静态博客的实现
Feb 17 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
JavaScript提升机制Hoisting详解
Oct 23 Javascript
Vue 3.0中jsx语法的使用
Nov 13 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获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
JavaScript简介
2015/02/15 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
如何获取vue单文件自身源码路径
2019/05/06 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
有原因的手表:Flex Watches
2019/03/23 全球购物
车工岗位职责
2013/11/26 职场文书
毕业生就业自荐信
2013/12/04 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
后勤主管岗位职责
2014/03/01 职场文书
片区教研活动总结
2014/07/02 职场文书
护士先进个人总结
2015/02/13 职场文书
大学生英文求职信范文
2015/03/19 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
小学教师教育随笔
2015/08/14 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL