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

发布时间 - 2026-01-11 00:06:53    点击率:

前言

手势对于一些效果是比较重要的,在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; 
    }
  }
}

结尾

这篇文章,主要探索一下,希望你也可以提前看一下手势的解析。


# 微信小程序手势操作  # 小程序  # 单触摸点与多触摸点  # 手势操作  # 微信小程序实现拖拽 image 触摸事件监听的实例  # 微信小程序实现手指触摸画板  # 看一下  # 这篇文章  # 你也可以  # 数据格式  # 文档  # touchmoveFn  # bindtouchend  # touchendFn  # bindtouchmove  # bindtouchstart  # gestureView  # touchstartFn  # log  # move  # PageX  # console  # gt  # function  # event  # id 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器选型指南:免备案配置与高效建站方案解析  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Python文件异常处理策略_健壮性说明【指导】  js代码实现下拉菜单【推荐】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  如何用低价快速搭建高质量网站?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Python正则表达式进阶教程_复杂匹配与分组替换解析  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何有效防御Web建站篡改攻击?  如何用PHP快速搭建高效网站?分步指南  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel如何处理表单验证?(Requests代码示例)  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel如何记录自定义日志?(Log频道配置)  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在香港免费服务器上快速搭建网站?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Laravel如何发送系统通知?(Notification渠道示例)  Laravel如何实现用户注册和登录?(Auth脚手架指南)  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  深圳网站制作平台,深圳市做网站好的公司有哪些?  在centOS 7安装mysql 5.7的详细教程  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  大连网站制作公司哪家好一点,大连买房网站哪个好?  七夕网站制作视频,七夕大促活动怎么报名?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  EditPlus中的正则表达式 实战(4)  南京网站制作费用,南京远驱官方网站?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何挑选高效建站主机与优质域名?  如何在企业微信快速生成手机电脑官网?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何快速上传自定义模板至建站之星?  昵图网官网入口 昵图网素材平台官方入口  青岛网站建设如何选择本地服务器?  EditPlus中的正则表达式 实战(1)