小程序更多的手势事件(左右滑动、放大缩小、双击、长按)

这篇具有很好参考价值的文章主要介绍了小程序更多的手势事件(左右滑动、放大缩小、双击、长按)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  • 微信小程序提供的原生事件有:触摸开始(bindtouchstart)、移动触摸点(bindtouchmove)、触摸结束(bindtouchend)以及长按事件(bindlongtap)和单击事件(bindtap)。通过以上原生事件可设计制作衍生出更多的手势事件;
  • 文章记录小程序中组件 “左右滑动、放大缩小、双击” 事件的配置;
  • “长按” 事件通过原生事件即可配置

一、组件事件的设置

<view class="new-event-test" bindtouchstart="myTouchStart" bindtouchmove="myTouchMove" bindtouchend="myTouchEnd" bindlongtap="myLongTap" bindtap="myTap">
</view>

二、左右滑动事件

  • 涉及原生事件有 “bindtouchstart”、“bindtouchmove”

1、流程图

  • 左事件流程图:
    小程序更多的手势事件(左右滑动、放大缩小、双击、长按)
  • 右事件流程图:
    小程序更多的手势事件(左右滑动、放大缩小、双击、长按)

2、代码示例

变量记录:

let startPoint = 0, //记录滑动的初始位置
let slipFlag = false, //定义 滑动事件 节流阀, 防止一次滑动触发多次滑动事件

bindtouchstart事件:

myTouchStart(e) {
    // ---------------------记录滑动事件信息---------------------
    //开启滑动事件
    slipFlag = true
    //记录触摸点的坐标信息
    startPoint = e.touches[0]
    //---------------------记录滑动事件信息end---------------------
},

bindtouchmove事件:

myTouchMove(e) {
    // ----------------监听手势左右滑事件----------------
    if (((startPoint.clientX - e.touches[e.touches.length - 1].clientX) > 80) && slipFlag) {
        console.log("左滑事件");
        slipFlag = false
        return
    } else if (((startPoint.clientX - e.touches[e.touches.length - 1].clientX) < -80) && slipFlag) {
        console.log("右滑事件");
        slipFlag = false
        return
    }
    // ----------------监听手势左右滑事件end----------------
},

三、放大缩小事件

  • 涉及原生事件有 “bindtouchstart”、“bindtouchmove”、“bindtouchend”

1、流程图

  • 放大事件流程图:
    小程序更多的手势事件(左右滑动、放大缩小、双击、长按)

  • 右事件流程图:
    小程序更多的手势事件(左右滑动、放大缩小、双击、长按)

2、代码示例

变量记录:

let zoomFlag = false, //定义 缩放事件 节流阀,防止一次缩放触发两次缩放事件
let distance = 0, //记录手指移动距离
let scale = 1, //定义初始化的页面缩放大小
let newScale = 0, //记录新的页面缩放大小

bindtouchstart事件:

myTouchStart(e) {
    //---------------------记录缩放事件信息---------------------
    // 当两根手指放上去的时候,将距离(distance)初始化。
    let xMove = e.touches[1].clientX - e.touches[0].clientX;
    let yMove = e.touches[1].clientY - e.touches[0].clientY;
    //计算开始触发两个手指坐标的距离
    distance = Math.sqrt(xMove * xMove + yMove * yMove);
    //---------------------记录缩放事件信息end---------------------
},

bindtouchmove事件:

myTouchMove(e) {
    // ----------------监听手势缩小放大事件----------------
    // 单手指缩放不做任何操作
    if (e.touches.length != 1) {
        //双手指运动 x移动后的坐标和y移动后的坐标
        let xMove = e.touches[1].clientX - e.touches[0].clientX;
        let yMove = e.touches[1].clientY - e.touches[0].clientY;
        //双手指运动新的 ditance
        let newDistance = Math.sqrt(xMove * xMove + yMove * yMove);
        //计算移动的过程中实际移动了多少的距离
        let distanceDiff = newDistance - distance;
        newScale = scale + 0.005 * distanceDiff
        // 打开缩放监听
		zoomFlag = true
        return
    }
    // ----------------监听手势缩小放大事件end----------------
},

bindtouchend事件:

myTouchEnd() {
    if (zoomFlag) {
        if (newScale > 1.3) {
            console.log("放大了");
        } else if (newScale < 0.7) {
            console.log("缩小了");
        }
        // 关闭缩放监听
        zoomFlag = false
    }
},

四、双击事件

  • 涉及原生事件有 “bindtap”

1、流程图

  • 双击事件流程图:
    小程序更多的手势事件(左右滑动、放大缩小、双击、长按)

2、代码示例

变量记录:

let lastTapTime = 0, //记录上一次点击时间

bindtap事件:

myTap(e) {
    // 监听双击事件
    let curTime = e.timeStamp
    if (lastTapTime > 0) {
        if (curTime - lastTapTime < 300) {
            console.log("双击屏幕事件");
        }
    }
    lastTapTime = curTime

提示:文章到此结束,文章仅为个人学习记录,若有不足还请大家指出。文章来源地址https://www.toymoban.com/news/detail-484571.html

到了这里,关于小程序更多的手势事件(左右滑动、放大缩小、双击、长按)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序,图片双指放大缩小

    不说废话,直接上代码,复制到项目改就完事了 wxml代码 js代码

    2024年02月08日
    浏览(100)
  • 微信小程序 左右滑动方法

    实现小程序左右滑动操作 wxml,在当前view层滑动操作 data数据

    2024年02月11日
    浏览(47)
  • 小程序商品分类页面滑动左右联动

    系列文章目录 前言 一、vtabs是什么? 二、使用步骤 1.json引入 2.wxml中使用 3.js中代码 总结 商品分类页面,左边分类及右边商品左右联动 因为微信小程序scroll-view没有h5锚点控制联动,并且需求是根据整个页面的滚动条来控制联动,所以使用了页面滚动事件onPageScroll来获取页面

    2024年02月12日
    浏览(33)
  • 微信小程序———同一页面内左右滑动切换内容显示

    一、微信小程序事件  由于首先介绍一下微信小程序中的事件,可选择快速略过或者直接进去之后的重点内容 一、什么是事件 事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对

    2024年02月03日
    浏览(48)
  • uniapp小程序—实现下滑关闭抽屉(包含上下左右滑动)

    操作:点击相应文字时从底部出现弹框,下滑超过一定速率,弹框回到下方隐藏; 这个组件有些多余的地方我没删,可以自行扩展。以下附带移动端的上下左右滑动,可以借鉴实现小程序的左右滑动

    2024年02月13日
    浏览(36)
  • 微信小程序实现左右滑动进行切换数据页面(touchmove)

    手指触摸左右滑动进行切换数据 需要实现的是有一个tab栏,点选某一个tab的时候切换页面,手势滑动,左滑右滑效果和点击tab一样切换页面数据。 这里我们要先了解几个微信的事件属性 touchstart : 手指触摸动作开始 touchmove:手指触摸后移动 touchcancel:手指触摸动作被打断,

    2024年02月11日
    浏览(40)
  • 【uniapp小程序】使用swiper实现页面内部左右滑动的切换

    具体效果:手指在页面左右滑动会切换tab  背景:项目里原有代码复制,去除一些功能,只留一个外壳,目的是为了以后套套套 代码: 注意:scroll-view标签内实现上来加载、下来刷新。因为现在页面用不到,所以并没有保留

    2024年02月12日
    浏览(36)
  • 微信小程序(二)微信小程序选择本地图片显示并预览(实现左右滑动)

    在微信小程序里面实现选择图片然后预览是一个非常普遍的功能,在我们上传图片文件的时候,都会选择本地的图片进行上传,在上传之前会查看一下自己上传的图片是否准确。所以要做到预览图片。 下面就实现一个简单的本地图片显示预览的功能~~ 1、创建页面 这里我直接

    2024年02月03日
    浏览(45)
  • 解决微信小程序在IOS端会上下左右滑动的问题

    在开发微信小程序的时候发现在IOS端会出现上下左右都能滑动的情况,但是安卓端就不会出现这种情况,百度了一下好像IOS就是默认可以滑动,安卓默认不允许,本篇就这个问题解决一下,毕竟可以随意滑动视觉上不太美观 在外层的view设置overflow隐藏就好了,重新编译测试就

    2024年02月12日
    浏览(128)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包