小程序开发|小程序制作|小程序开发网

搜索

小程序的拖拽、缩放和旋转手势

2022-5-31 18:31| 发布者: 快乐的鱼| 查看: 240| 评论: 6

摘要: 在开发中,有时会遇到像App中的手势那样的效果,下面就仿照App实现了一下。wxml部分: 纯文本查看 复制代码 {{msg}} wxss部分: 纯文本查看 复制代码page { width: 100%; height: 100 ...

在开发中,有时会遇到像App中的手势那样的效果,下面就仿照App实现了一下。wxml部分:
[AppleScript] 纯文本查看 复制代码
  {{msg}}  

wxss部分:
[AppleScript] 纯文本查看 复制代码
page {  width: 100%;  height: 100%;  background: #ffffff;}.touch-container {  width: 100%;  height: 100%;  padding-top: 0.1px;}.msg {  width: 100%;  height: 60rpx;  line-height: 60rpx;  text-align: center;  font-size: 30rpx;  color: #666666;}.img {  position: absolute;  width: 690rpx;  height: 300rpx;  transform-origin: center center;}

js部分:
[AppleScript] 纯文本查看 复制代码
var canOnePointMove = falsevar onePoint = {  x: 0,  y: 0}var twoPoint = {  x1: 0,  y1: 0,  x2: 0,  y2: 0}Page({  data: {    msg: '',    src: 'http://img01.taopic.com/150508/318763-15050PU9398.jpg',    width: 0,    height: 0,    left: 375,    top: 600,    scale: 1,    rotate: 0  },  // 关闭上拉加载  onReachBottom: function() {    return  },  bindload: function(e) {    var that = this    var width = e.detail.width    var height = e.detail.height    if (width > 750) {      height = 750 * height / width      width = 750    }    if (height > 1200) {      width = 1200 * width / height      height = 1200    }    that.setData({      width: width,      height: height    })  },  touchstart: function(e) {    var that = this    if (e.touches.length < 2) {      canOnePointMove = true      onePoint.x = e.touches[0].pageX * 2      onePoint.y = e.touches[0].pageY * 2    }else {      twoPoint.x1 = e.touches[0].pageX * 2      twoPoint.y1 = e.touches[0].pageY * 2      twoPoint.x2 = e.touches[1].pageX * 2      twoPoint.y2 = e.touches[1].pageY * 2    }  },  touchmove: function(e){    var that = this    if (e.touches.length < 2 && canOnePointMove) {      var onePointDiffX = e.touches[0].pageX * 2 - onePoint.x      var onePointDiffY = e.touches[0].pageY * 2 - onePoint.y      that.setData({        msg: '单点移动',        left: that.data.left + onePointDiffX,        top: that.data.top + onePointDiffY      })      onePoint.x = e.touches[0].pageX * 2      onePoint.y = e.touches[0].pageY * 2    }else if (e.touches.length > 1) {      var preTwoPoint = JSON.parse(JSON.stringify(twoPoint))      twoPoint.x1 = e.touches[0].pageX * 2      twoPoint.y1 = e.touches[0].pageY * 2      twoPoint.x2 = e.touches[1].pageX * 2      twoPoint.y2 = e.touches[1].pageY * 2      // 计算角度,旋转(优先)      var perAngle = Math.atan((preTwoPoint.y1 - preTwoPoint.y2)/(preTwoPoint.x1 - preTwoPoint.x2))*180/Math.PI      var curAngle = Math.atan((twoPoint.y1 - twoPoint.y2)/(twoPoint.x1 - twoPoint.x2))*180/Math.PI      if (Math.abs(perAngle - curAngle) > 1) {        that.setData({          msg: '旋转',          rotate: that.data.rotate + (curAngle - perAngle)        })      }else {        // 计算距离,缩放        var preDistance = Math.sqrt(Math.pow((preTwoPoint.x1 - preTwoPoint.x2), 2) + Math.pow((preTwoPoint.y1 - preTwoPoint.y2), 2))        var curDistance = Math.sqrt(Math.pow((twoPoint.x1 - twoPoint.x2), 2) + Math.pow((twoPoint.y1 - twoPoint.y2), 2))        that.setData({          msg: '缩放',          scale: that.data.scale + (curDistance - preDistance) * 0.005        })      }    }  },  touchend: function(e) {    var that = this    canOnePointMove = false  }})

json部分:
[AppleScript] 纯文本查看 复制代码
"navigationBarTitleText": "识别手势",  "navigationBarTextStyle":"black",  "navigationBarBackgroundColor": "#FFF",  "disableScroll": true



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 北极圈的瓜 2022-5-31 19:36
不错,标记一下
引用 xiaoxiao 2022-5-31 19:26
not working
引用 牛摩的 2022-5-31 19:13
not working
引用 yangyuan 2022-5-31 19:10
这和预览图片有什么区别
引用 xiaoxiao 2022-5-31 18:53
不过这个帖子以前发过,重复了啊
引用 yangyuan 2022-5-31 18:46
哇 这个厉害了

查看全部评论(6)

返回顶部