微信小程序~触摸相关事件(拖拽操作、手势识别、多点触控)

touchstart     手指触摸动作开始
touchmove    手指触摸后移动
touchcancel  手指触摸动作被打断,如来电提醒,弹窗
touchend      手指触摸动作结束

拖拽操作案例1:

  注意按钮拖出屏幕边缘处理

<view id="id" bindtouchmove="handletouchmove" class=‘demo‘ style=‘top:{{ballTop}}px; left: {{ballLeft}}px‘></view>
page{background:red}
.demo{ width:60px; height:60px; background:#545345;box-shadow:2px 2px 10px #AAA;border-radius: 20px;position: absolute; }
Page({
  data: {
    ballTop: 0,
    ballLeft: 0,
    screenHeight: 0,
    screenWidth: 0
  },
  onLoad: function () {
    // 一是会将按钮拖出屏幕边缘,
    // 二是按钮始终在鼠标右下方。
    // 获取屏幕宽高
    var _this = this;
    wx.getSystemInfo({
      success: function (res) {
        _this.setData({
          screenHeight: res.windowHeight,
          screenWidth: res.windowWidth,
        });
      }
    });
  },
  handletouchmove: function (event) {
    // console.log(event)
    let pageX = event.touches[0].pageX;
    let pageY = event.touches[0].pageY;
    //屏幕边界判断   中心点位置
    if (pageX < 30 || pageY < 30)
      return;
    if (pageX > this.data.screenWidth - 30)
      return;
    if (pageY > this.data.screenHeight - 30)
      return;

    //左上角位置
    this.setData({
      ballTop: event.touches[0].pageY - 30,
      ballLeft: event.touches[0].pageX - 30,
    });

  }
})

手势识别案例2:

<view id="id" bindtouchstart="handletouchtart" bindtouchmove="handletouchmove"
style="width:100%px;height:80px;line-height:80px;color:#fff;text-align:center; background:red">
{{text}}
</view>
Page({
  data: {
    lastX: 0,
    lastY: 0,
    text: "没有滑动",
  },
  handletouchmove: function (event) {
    // console.log(event)
    let currentX = event.touches[0].pageX
    let currentY = event.touches[0].pageY
    let tx = currentX - this.data.lastX
    let ty = currentY - this.data.lastY
    let text = ""

    if (Math.abs(tx) > Math.abs(ty)) {
      //左右方向滑动
      if (tx < 0)
        text = "向左滑动"
      else if (tx > 0)
        text = "向右滑动"
    }
    else {
      //上下方向滑动
      if (ty < 0)
        text = "向上滑动"
      else if (ty > 0)
        text = "向下滑动"
    }

    //将当前坐标进行保存以进行下一次计算
    this.data.lastX = currentX
    this.data.lastY = currentY
    this.setData({
      text: text,
    });

  },
  handletouchtart: function (event) {
    // console.log(event)
    // 赋值
    this.data.lastX = event.touches[0].pageX
    this.data.lastY = event.touches[0].pageY
  }
})

多点触控案例3:

  根据相关功能可进行通过编辑器-远程调试,如手指张开的操作,可以分别判断两个触摸点的移动方向,比如靠左的触摸点向左滑动,靠右的触摸点向右滑动,即可判定为手指张开操作。

原文地址:https://www.cnblogs.com/changxue/p/8466836.html

时间: 2024-12-08 04:08:14

微信小程序~触摸相关事件(拖拽操作、手势识别、多点触控)的相关文章

微信小程序--图片相关问题合辑

图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.previewImage预览图片 微信小程序之预览图片 小程序开发:上传图片到腾讯云 .NET开发微信小程序-上传图片到服务器 微信小程序本地图片处理--按屏幕尺寸插入图片 [微信小程序]上传图片到阿里云OSS Python Flask小程序文件(图片)上传技巧 小程序图片上传阿里OSS使用方法 微信小程序问题汇

Android笔记:触摸事件的分析与总结----多点触控

一.多点触控 当多点同时触摸屏幕时,系统将会产生如下的触摸事件: 1.ACTION_DOWN:触摸屏幕的第一个点.此时手势开始.该点的数据通常在MotionEvent事件队列索引位置0处. 2.ACTION_POINTER_DOWN:除了第一个点的其他触摸点数据.该点的数据的索引位置由getActionIndex()方法返回. 3.ACTION_MOVE:在手势过程中发生的一次变化. 4.ACTION_POINTER_UP:当不是第一个点的其他点UP后触发. 5.ACTION_UP:当手势中的最

0608 微信小程序 (button组件 + 事件 及变量传递,icon组件)

1.button组件 是一个按钮组件 <button  type="type" size="size" color="color"  bindtap="点击后执行的方法名(需要写在当前页对应的js文件中)  data-hi="50" > 按钮字样</button>  //data-hi 为自定义交互变量,对其设置了一个50的变量 button包含属性较多.主要的说两个 1.1 type:按钮样

?微信小程序?--基本组件,事件,自定义组件

水了几篇博客真开心.其实不是真的水,也配图啥的吧 .... 好了, 我要开始认真了哈 跟着我 好好学,明年哥给你取个嫂子! 基本组件 <view>这就类似于我们的 div 很简单吧!</view> <text>简单的文本</text> <image>参数有 src mode(图片的裁剪)</image> 简单的水一下就行了 还有两个viedo(视频) 和 swiper(微信内置的轮播图组件) 都在这个链接里了 点击==点我== 事件(

微信小程序-点击事件传递参数

首先 bindtap 绑定点击事件, 在标签中利用 data-xxx  来定义你要传入的参数,, 然后事件中传入 event 用 event.currentTarget.dataset.xxx 来取你传入的值 原文地址:https://www.cnblogs.com/listen9436/p/11113449.html

微信小程序开发心得

微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司认证信息如,营业执照等 再次就是用一个未曾开通过公众号的QQ号或微信号来注册一个微信小程序号. 最后,下载微信小程序开发工具. 由于这里,我们更多的关注如何去开发一些app,而不是科谱微信小程序,故在此不在过多的解释,详细的说明,可以去官网帮助文档. 首先,我们拿自己的项目在一步一步的说明并开发吧,

微信小程序开发教程(八)视图层——.wxml详解

框架的视图层由WXMKL(WeiXin Markup language)与WXSS(WeiXin Style Sheet)编写,由组件进行展示. 对于微信小程序而言,视图层就是所有.wxml文件与.wxss文件的集合. 微信小程序在逻辑层将数据进行处理后发送给视图层展现出来,同时接受视图层的事件反馈. ? .wxml文件用于描述页面的结构. ? .wxss文件用于描述页面的样式. 视图层以给定的样式展现数据并将时间反馈给逻辑层,而数据展现是以组件来进行的.组件(Component)是视图的基本单

【免费下载】全套最新 017微信小程序 视频教程+教学资料+学习课件+源代码+软件开发工具

017微信小程序视频教程 网盘地址: 链接:https://pan.baidu.com/s/1VV5KVxd7\_LLOMSM8BNuFqg 提取码:6d4k 加公众号 获取更多新教程 教程目录大纲 ./017微信小程序 ├── 视频 │?? ├── 01. _微信小程序_入门介绍.avi │?? ├── 02. _微信小程序_相关资料.avi │?? ├── 03. _微信小程序_特点介绍.avi │?? ├── 04. _微信小程序_移动端适配相关内容.avi │?? ├── 05. _微信

微信小程序开发工具快捷键

最近微信小程序已经开始公测了,鉴于开发的过程中更加便捷的编写代码,最近整理了一下<微信开发者工具>一些实用的快捷键分享给大家: 微信小程序开发工具快捷键 格式调整 Ctrl+S:保存文件 Ctrl+[, Ctrl+]:代码行缩进 Ctrl+Shift+[, Ctrl+Shift+]:折叠打开代码块 Ctrl+C Ctrl+V:复制粘贴,如果没有选中任何文字则复制粘贴一行 Shift+Alt+F:代码格式化 Alt+Up,Alt+Down:上下移动一行 Shift+Alt+Up,Shift+Al