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


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 相关文章推荐
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
查找页面中所有类为test的结点的方法
Mar 28 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
Jan 08 Javascript
jquery中JSON的解析方式
Mar 16 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
JavaScript判断用户名和密码不能为空的实现代码
May 16 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
Mar 02 Javascript
VUE使用vuex解决模块间传值问题的方法
Jun 01 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
Jul 24 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php.ini 配置文件的深入解析
2013/06/17 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
深入浅出ES6之let和const命令
2016/08/25 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
Python ftp上传文件
2016/02/13 Python
Python三级目录展示的实现方法
2016/09/28 Python
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
pandas如何处理缺失值
2019/07/31 Python
Python 切分数组实例解析
2019/11/07 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
自我鉴定范文
2013/11/10 职场文书
考试不及格检讨书
2014/01/09 职场文书
英语简历自我评价
2014/01/26 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
烟台的海导游词
2015/02/02 职场文书
闪闪红星观后感
2015/06/08 职场文书
元宵节晚会主持词
2015/07/01 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫