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

发布时间 - 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


相关推荐: 如何确保FTP站点访问权限与数据传输安全?  微信小程序 wx.uploadFile无法上传解决办法  Laravel如何使用Gate和Policy进行授权?(权限控制)  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  Laravel如何实现事件和监听器?(Event & Listener实战)  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel如何实现本地化和多语言支持?(i18n教程)  如何在IIS中新建站点并配置端口与物理路径?  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何在IIS中新建站点并配置端口与IP地址?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  python中快速进行多个字符替换的方法小结  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  LinuxShell函数封装方法_脚本复用设计思路【教程】  网站制作壁纸教程视频,电脑壁纸网站?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  黑客如何利用漏洞与弱口令入侵网站服务器?  bootstrap日历插件datetimepicker使用方法  C++用Dijkstra(迪杰斯特拉)算法求最短路径  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  ,网页ppt怎么弄成自己的ppt?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  EditPlus中的正则表达式实战(6)  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何在万网主机上快速搭建网站?  Java类加载基本过程详细介绍  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何安全更换建站之星模板并保留数据?  如何基于云服务器快速搭建个人网站?  如何在Windows环境下新建FTP站点并设置权限?  html5的keygen标签为什么废弃_替代方案说明【解答】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel如何生成API文档?(Swagger/OpenAPI教程)  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  如何在香港服务器上快速搭建免备案网站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何为不同团队 ID 动态生成多个非值班状态按钮  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  移动端脚本框架Hammer.js  Laravel如何实现用户注册和登录?(Auth脚手架指南)