微信小程序实现通过双向滑动缩放图片大小的方法


Posted in Javascript onDecember 30, 2018

本文实例讲述了微信小程序实现通过双向滑动缩放图片大小的方法。分享给大家供大家参考,具体如下:

在做小程序开发的过程中,后端传来一张图片地图,需要实现双手指滑动,使图片缩放,最终得出了一下代码:

js :

Page({
 data: {
  touch: {
   distance: 0,
   scale: 1,
   baseWidth: null,
   baseHeight: null,
   scaleWidth: null,
   scaleHeight: null
  }
 },
 touchStartHandle(e) {
 // 单手指缩放开始,也不做任何处理
 if (e.touches.length == 1) {
   console.log("单滑了")
 return
  }
  console.log('双手指触发开始')
 // 注意touchstartCallback 真正代码的开始
  // 一开始我并没有这个回调函数,会出现缩小的时候有瞬间被放大过程的bug
  // 当两根手指放上去的时候,就将distance 初始化。
  let xMove = e.touches[1].clientX - e.touches[0].clientX;
  let yMove = e.touches[1].clientY - e.touches[0].clientY;
  let distance = Math.sqrt(xMove * xMove + yMove * yMove);
 this.setData({
 'touch.distance': distance,
  })
 },
 touchMoveHandle(e) {
  let touch = this.data.touch
 // 单手指缩放我们不做任何操作
 if (e.touches.length == 1) {
   console.log("单滑了");
 return
  }
  console.log('双手指运动开始')
  let xMove = e.touches[1].clientX - e.touches[0].clientX;
  let yMove = e.touches[1].clientY - e.touches[0].clientY;
 // 新的 ditance
  let distance = Math.sqrt(xMove * xMove + yMove * yMove);
  let distanceDiff = distance - touch.distance;
  let newScale = touch.scale + 0.005 * distanceDiff
 // 为了防止缩放得太大,所以scale需要限制,同理最小值也是
 if (newScale >= 2) {
   newScale = 2
  }
 if (newScale <= 0.6) {
   newScale = 0.6
  }
  let scaleWidth = newScale * touch.baseWidth
  let scaleHeight = newScale * touch.baseHeight
 // 赋值 新的 => 旧的
 this.setData({
 'touch.distance': distance,
 'touch.scale': newScale,
 'touch.scaleWidth': scaleWidth,
 'touch.scaleHeight': scaleHeight,
 'touch.diff': distanceDiff
  })
 },
 load: function (e) {
 // bindload 这个api是<image>组件的api类似<img>的onload属性
 this.setData({
 'touch.baseWidth': e.detail.width,
 'touch.baseHeight': e.detail.height,
 'touch.scaleWidth': e.detail.width,
 'touch.scaleHeight': e.detail.height
  });
 }
})

然后将新获得的图片宽度和高度赋值给图片即可实现滑动缩放

wxml:

<image mode='scaleToFill' src='../../../images/01.jpg'
bindtouchstart='touchStartHandle'
bindtouchmove='touchMoveHandle'
bindload='load'
style="width: {{ touch.scaleWidth }}px;
height: {{ touch.scaleHeight }}px"></image>

最后,通过手机预览,就会发现已达到预想的效果!

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
jQuery实现带滚动线条导航效果的方法
Jan 30 Javascript
Node.js 实现简单小说爬虫实例
Nov 18 Javascript
Node.js用readline模块实现输入输出
Dec 16 Javascript
layui 表格的属性的显示转换方法
Aug 14 Javascript
在vue 中使用 less的教程详解
Sep 26 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
Aug 20 Javascript
JS实现页面数据懒加载
Feb 13 Javascript
uni-app使用微信小程序云函数的步骤示例
May 22 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
微信小程序使用setData修改数组中单个对象的方法分析
Dec 30 #Javascript
微信小程序提交form操作示例
Dec 30 #Javascript
bootstrap下拉分页样式 带跳转页码
Dec 29 #Javascript
详解vue 兼容IE报错解决方案
Dec 29 #Javascript
玩转Koa之koa-router原理解析
Dec 29 #Javascript
Bootstrap Paginator+PageHelper实现分页效果
Dec 29 #Javascript
玩转Koa之核心原理分析
Dec 29 #Javascript
You might like
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
js 编写规范
2010/03/03 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
Python实现的生成格雷码功能示例
2018/01/24 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
python字符串string的内置方法实例详解
2018/05/14 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
财务出纳岗位职责
2014/02/03 职场文书
超市国庆节促销方案
2014/02/20 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
人力资源主管职责范本
2014/03/05 职场文书
家教广告词
2014/03/19 职场文书
残疾人小组计划书
2014/04/27 职场文书
早读课迟到检讨书
2014/09/25 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
小学三年级作文之写景
2019/11/05 职场文书