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


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 相关文章推荐
jquery插件jbox使用iframe关闭问题
Feb 09 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
分享一则JavaScript滚动条插件源码
Mar 03 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
jquery 动态合并单元格的实现方法
Aug 26 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 Javascript
Vue.js路由实现选项卡简单实例
Jul 24 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
Jan 07 Javascript
javascript数组includes、reduce的基本使用
Jul 02 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 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
Javascript实现倒计时时差效果
2017/05/18 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
python实现小世界网络生成
2019/11/21 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
安全生产中长期规划实施方案
2014/02/21 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
自主招生专家推荐信
2015/03/26 职场文书
少先队工作总结2015
2015/05/13 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Golang 编译成DLL文件的操作
2021/05/06 Golang
java泛型通配符详解
2021/07/25 Java/Android