方法定义:

let shakeInfo = {openFlag: false,// 是否开启摇一摇,*****注意:如果是小程序全局监听摇一摇,这里默认为trueshakeSpeed: 110,//设置阈值,越小越灵敏shakeStep: 2000,//摇一摇成功后间隔lastTime: 0,//此变量用来记录上次摇动的时间x: 0,y: 0,z: 0,lastX: 0,lastY: 0,lastZ: 0, //此组变量分别记录对应 x、y、z 三轴的数值和上次的数值
};
function openShakeEvent() {shakeInfo.openFlag = true;
}
function closeShakeEvent() {shakeInfo.openFlag = false;
}
function shakeOk() {closeShakeEvent();setTimeout(function () {openShakeEvent();}, shakeInfo.shakeStep);
}
/*** 判断是否为摇一摇*/
function shake(acceleration, successCallback) {if (!shakeInfo.openFlag) {return;}var nowTime = new Date().getTime(); //记录当前时间//如果这次摇的时间距离上次摇的时间有一定间隔 才执行if (nowTime - shakeInfo.lastTime > 100) {var diffTime = nowTime - shakeInfo.lastTime; //记录时间段shakeInfo.lastTime = nowTime; //记录本次摇动时间,为下次计算摇动时间做准备shakeInfo.x = acceleration.x; //获取 x 轴数值,x 轴为垂直于北轴,向东为正shakeInfo.y = acceleration.y; //获取 y 轴数值,y 轴向正北为正shakeInfo.z = acceleration.z; //获取 z 轴数值,z 轴垂直于地面,向上为正//计算 公式的意思是 单位时间内运动的路程,即为我们想要的速度var speed = Math.abs(shakeInfo.x + shakeInfo.y + shakeInfo.z - shakeInfo.lastX - shakeInfo.lastY - shakeInfo.lastZ) / diffTime * 10000;//console.log(speed)if (speed > shakeInfo.shakeSpeed) { //如果计算出来的速度超过了阈值,那么就算作用户成功摇一摇successCallback();}shakeInfo.lastX = shakeInfo.x; //赋值,为下一次计算做准备shakeInfo.lastY = shakeInfo.y; //赋值,为下一次计算做准备shakeInfo.lastZ = shakeInfo.z; //赋值,为下一次计算做准备}
}

方法调用,在小程序启动首页页面onLoad添加如下代码:

 /*** 生命周期函数--监听页面加载*/onLoad: function(options) {//wx.onAccelerometerChange(function(acceleration) {Main.shake(acceleration, function() {Main.shakeOk();Main.openBarCodeDlg(); // 在这里调用摇一摇成功后执行的代码});});}

如果是小程序全局都监听摇一摇,以上代码就可以实现,如果只是配置指定某几个页面监听,则需要在监听的页面做以下code:

onShow: function() {Main.openShakeEvent();
},
onHide: function() {Main.closeShakeEvent();
}

这样在跳转到非监听页面时就不会执行你的代码了

微信小程序开发摇一摇功能_javascript技巧相关推荐

  1. 微信小程序开发类似微博回复功能自带云开发数据库(无限回复)

    注意事项:本文放置了关键代码和全部该页的全部代码,按需自取.html中存在少许图片,大家加上自己喜欢的即可.数据库结构内容也会展示给大家. 效果: 第一条回复的是帖子,第二条回复的是第三条,第三条回复 ...

  2. 配置微信小程序开发分享朋友圈功能

    在微信开发者平台上,可以按照以下步骤正确配置分享相关的参数: 登录微信开发者平台 在浏览器中访问微信开发者平台(https://mp.weixin.qq.com/),使用微信公众号的管理员账号登录. ...

  3. 微信小程序wxml如何判断字符串中汉语某字符_微信小程序开发经典案例解析“嗨兔儿”...

    嗨兔儿是微信公众号嗨日语歌(hitaici)助手,主要为用户提供,关键词检索,帮助手册等,为外语学习者提供一个便捷的操作方式,能够开心工作,开心生活. 开发过程及注意事项分享视频. 1. 微信小程序开 ...

  4. 微信小程序开发工具介绍及安装(下)

    开发工具的基本功能介绍 微信小程序开发工具是一款强大的集成开发环境(IDE),旨在帮助开发者更便捷地创建.调试和发布微信小程序.它提供了丰富的功能和工具集,下面将对微信小程序开发工具的基本功能进行详细 ...

  5. 微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现

    接着上面微信小程序开发教程第八章:微信小程序分组开发与左滑功能实现.(第一二章:微信小程序开发教程,第三四章:微信小程序项目结构以及配置&微信小程序首页面开发,第五章:微信小程序名片夹详情页开 ...

  6. 农家乐微信小程序开发功能

    对于农家乐旅游行业的微信小程序开发,重点还是应该放在功能上,比如:为游客提供最便捷的路线,帮助使用者制定好相应的旅游景点,当然要有旅游费用的预估功能,帮助游客更好的了解出行的所有,让游客在进行农家乐旅 ...

  7. 微信小程序开发(2) - 微信小程序实现拍照和录像拍摄功能方法

    微信小程序开发2 - 本文实例讲述了微信小程序实现拍照和录像拍摄功能方法.分享给大家供大家参考,具体如下: 微信小程序拍照: API:wx.chooseImage 原先的想法是使用微信的camera组 ...

  8. 微信小程序原生开发功能合集一:微信小程序开发介绍

    一.专栏介绍   本专栏主要内容为微信小程序常用功能开发过程的介绍说明,包括开发微信小程序常用组件的封装.常用功能的开发等,提供源代码.开发过程讲解视频.完整的课程等.   组件封装: 下拉选择组件. ...

  9. 微信小程序开发(四)入门之打卡功能开发

    相关文章 微信小程序开发(一)微信开发者工具以及小程序框架介绍 微信小程序开发(二)开发之日历打卡小程序发现页 微信小程序开发(三)入门之创建打卡活动 前言 本篇文章将介绍打卡小程序打卡页面相关功能的 ...

  10. 人才招聘微信小程序开发制作功能介绍

    人才招聘微信小程序开发制作功能介绍 功能详情: 1.展示职位列表 2.展示简历列表 3.企业会员中心 4.个人会员中心展示 5.首页推荐企业广告位展示 6.职位详情展示 人才招聘微信小程序 企业入驻及 ...

最新文章

  1. 关于MySQL线程池,这也许是目前最全面的实用帖!
  2. 【Java基础】容器
  3. python编程需要什么软件-python编程用哪个软件
  4. 关于WPS页面横向问题
  5. 四种常用的垃圾收集器
  6. 大文件分片上传前端框架_基于Node.js的大文件分片上传
  7. WM_PAINT介绍及OnPaint()函数的作用原理
  8. colorkey唇釉是否安全_colorkey空气唇釉,19/支
  9. android应用窗口模式,[技巧]如何启用Android N开发者预览版中的“自由窗口”模式...
  10. 计算机图形学试题a卷,计算机图形学复习题及答案
  11. oracle 匿名段,这段匿名块看着没什么问题啊
  12. 论文学习8-How Question Generation Can Help Question Answering over Knowledge Base(KBQA-知识问答)
  13. 在Linux上安装JDK9
  14. 【海洋女神原创】关于installshield“完美卸载”的改进方法
  15. IIS7里的appcmd命令
  16. 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》影评:生而孤独,从不认命...
  17. mysql 批量录入 id_Mysql 批量插入数据 提前获得主键id
  18. 目前流行的、强大的基于Java的机器学习开发库精选
  19. 安卓不透明度和透明度
  20. 用计算机进行废物回收,回收旧的显示器以进行废物利用

热门文章

  1. 量价齐升收复3000点大关,热点股短线注意高抛!
  2. 玩转HttpRunner 框架,再累也没“黑眼圈”
  3. 京东618:算法让UV价值提升200%+,用智能卖场缩短购物路径
  4. react-router-dom V6 文档
  5. SAP Message no.M8476 迄今为止冲销数量大于贷出数量
  6. (遥感笔记)遥感图像的邻接效应
  7. 两张图按同一坐标合并_excel如何将两个图合并为同X轴,不同Y轴的图?
  8. 算法基础提升——动态规划(C++实现)
  9. GTS 中testDefaultGrantsWithRemoteExceptions fail 详解
  10. 使用Ganache、web3.js和remix在私有链上部署并调用合约