版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在实际的移动应用程序交互方式中,最常见的就是滑动操作。像左右滑动切换页面,手指张开来放大等,都是由滑动操作来完成的。小程序默认提供的相关事件如下:tap 对应点击操作,还提供了 longtap 来支持长按操作,这些都比较简单,就不多做讲述。touove 对应滑动操作,通过 bindtouove 即可响应滑动操作。疯狂早茶小程序基础篇七:滑动操作/wxml/jsPage(handletouove: function(event) console.log(event),)当按住 view,当鼠标移出 view区域后依然会触发事件。拖拽操作通过滑动事件,可以实现一些实用的功能,比如用过的用户都知道
2、assistivetouch,一个桌面上的快捷按钮,可以将按钮拖动到桌面的任意位置。为了方便,这里就用一个圆形来代表该按钮。/wxml/wxss.ball box-shadow:2px 2px 10px #AAA;border-radius: 20px;ition: absolute;/jsPage(handletouove: function(event) console.log(event),)好吧,按钮丑了点,这不是重点。拖拽操作的实现思路也很简单,当触发滑动事件时,event 对象会包含当前触摸位置的坐标信息,可以通过 event.touches0.pageX 和 event.touc
3、hes0.pageY 来获取,为什么 touches 是数组呢,是为了支持多点触控(在电脑上不知道如何模拟多点触控)。接下来将按钮的位置设置为触摸位置,应该就能实现预期效果了,让试试看。在 Page 中定义按钮的位置数据 ballBottom 和 b,并绑定到 view 的对应属性中。/wxml/jsPage(data: ballTop: 0,ballLeft: 0,handletouove: function(event) console.log(event),)接下来在 handletou方法中更新按钮的位置数据handletouove: function(event) console.l
4、og(event)this.setData (ballTop: event.touches0.pageY,ballLeft: event.touches0.pageX,);,运行发现基本可以实现效果,不过有两个问题,一是会将按钮拖出屏幕边缘,二是按钮始终在鼠标右下方。接下来加入对屏幕边界的判断并对按钮位置进行修正。其中屏幕大小可以通过 wx.getSystemInfo 来获取。完整代码如下:Page(data: ballTop: 0,ballLeft: 0,screenHeight:0,screenWidth:0,onLoad: function () /获取屏幕宽高var _this = t
5、his;wx.getSystemInfo(sucs: function (res) _this.setData(screenHeight: res.windowHeight,screenWidth: res.windowWidth,););,handletouove: function(event) console.log(event)let pageX = event.touches0.pageX;let pageY = event.touches0.pageY;/屏幕边界判断if (pageX 30 | pageY this.data.screenWidth - 30)return;if
6、(pageY this.data.screenHeight - 30)return;this.setData (ballTop: event.touches0.pageY - 30,ballLeft: event.touches0.pageX - 30,);,)再次运行,一切 ok。手势识别通过处理滑动操作可以识别各种手势操作,如左右滑动等。思路也很简单,通过绑定 touchstart 和 touove 事件,然后对坐标信息进行识别计算即可(如 current.PageX - last.PageX 0 则认为是向左滑动)/wxmltext/jsPage(data: lastX: 0,lastY
7、: 0,text : 没有滑动,handletouove: function(event) console.log(event)let currentX = event.touches0.pageXlet currentY = event.touches0.pageYconsole.log(currentX)console.log(this.data.lastX)let text = if (currentX - this.data.lastX) 0)text = 向右滑动/将当前坐标进行保存以进行下一次计算this.data.lastX = currentXthis.data.lastY =
8、 currentYthis.setData(text : text,);,handletouchtart:function(event) console.log(event)this.data.lastX = event.touches0.pageXthis.data.lastY = event.touches0.pageY,handletap:function(event) console.log(event),)运行程序,当向左滑动时会 view 会显示向左滑动,向右同理。同时识别左右滑动和上下互动有时候希望同时识别左右和上下滑动,可以通过比较 X 轴上的差值和 Y 轴上的差值,较大的差值
9、为滑动方向。handletouove: function(event) console.log(event)let currentX = event.touches0.pageXlet currentY = event.touches0.pageYlet tx = currentX - this.data.lastXlet ty = currentY - this.data.lastYlet text = /左右方向滑动if (Mabs(tx) Maif (tx 0)text = 向右滑动/上下方向滑动else if (ty 0)text = 向下滑动/将当前坐标进行保存以进行下一次计算thi
10、s.data.lastX = currentXthis.data.lastY = currentYthis.setData(text : text,);,在实际应用中,当某种手势被触发后,在用户没有放开鼠标或手指前,会一直识别为该手势。比如当用户触发左滑手势后,这时再向下滑动,仍要按照左滑手势来处理。可以定义一个标记来第一次识别到势,如果已识别出手势,后续的滑动操作就可以忽略或手指操作可以通过绑定 handletouchend 事件来处理。Page(data: lastX: 0,lastY: 0,text : 没有滑动,currentGesture: 0,handletouove: funct
11、ion(event) console.log(event)if (this.durrentGesture != 0)returnlet currentX = event.touches0.pageXlet currentY = event.touches0.pageYlet tx = currentX - this.data.lastXlet ty = currentY - this.data.lastYlet text = /左右方向滑动if (Mabs(tx) Mabs(ty) if (tx 0) text = 向右滑动this.durrentGesture = 2/上下方向滑动else if (ty 0) text = 向下滑动this.durrentGesture = 4/将当前坐标进行保存以进行下一次计算this.data.lastX = currentXthis.data.lastY = currentYthis.setData(text : text,);,handletouchtart:function(event) console.log(event)this.data.lastX = event.touches0.pageXthis.data.lastY = event.touches0.pageY,handletouchend:funct
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天然药材质量保证承诺函5篇
- 营销团队销售业绩数据分析模板
- 2026年云南省牟定县茅阳中学初三第二学期调研考试(语文试题)试题含解析
- 甘肃省平凉崆峒区重点达标名校2025-2026学年初三5月教学质量调研英语试题含解析
- 湖南省怀化市会同一中学、溆浦一中学2026年初三3月联考英语试题试卷含解析
- 湖南长沙市雅礼洋湖实验中学2025-2026学年初三第三次(5月)(三模)语文试题试卷含解析
- 2026届四川省成都市大邑县初三第十次考试英语试题含解析
- 人工智能技术在智能家居系统中的应用操作手册
- 企业人力资源绩效评估体系构建工具
- 2026九年级语文下册第一单元阅读重点突破作业课件新人教版
- 2026年宁夏石嘴山市单招职业适应性测试题库及一套答案详解
- 2026广东广州市黄埔区机关事务管理局招聘政府雇员3人笔试备考题库及答案解析
- 中烟机械技术中心招聘笔试题库2026
- (已压缩)广东省工程勘察设计服务成本取费导则(2024版)
- GB/T 26948.1-2011工业车辆驾驶员约束系统技术要求及试验方法第1部分:腰部安全带
- GB/T 25477-2010防腐磁性翻柱式液位计
- GB/T 16582-2008塑料用毛细管法和偏光显微镜法测定部分结晶聚合物熔融行为(熔融温度或熔融范围)
- 压力性损伤的预防
- 紫外线消毒灯使用管理制度
- 异步电机调压调速控制系统设计与仿真设计
- DB32-T 3848-2020有限空间作业安全操作规范-(高清现行)
评论
0/150
提交评论