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


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获得地址栏?问号后参数的方法
Aug 08 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
Mar 12 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
javascript中checkbox使用方法简单实例演示
Nov 17 Javascript
javascript从作用域链谈闭包
Jul 29 Javascript
基于Vuejs实现购物车功能
Aug 02 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
Aug 27 Javascript
Javascript表单序列化原理及实现代码详解
Oct 30 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实现补齐关闭的HTML标签
2016/03/22 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
jquery 学习笔记一
2010/04/07 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
VueJs监听window.resize方法示例
2018/01/17 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
一个简单的python程序实例(通讯录)
2013/11/29 Python
python读取二进制mnist实例详解
2017/05/31 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Django  ORM 练习题及答案
2019/07/19 Python
Python数据存储之 h5py详解
2019/12/26 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
如何提高JDBC的性能
2013/04/30 面试题
珍珠鸟教学反思
2014/02/01 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
管理提升方案
2014/06/04 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
2015年公务员工作总结
2015/04/24 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
MySQL锁机制
2021/04/05 MySQL
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android