微信公众平台开发(108) 微信摇一摇
2016-01-16 11:32
281 查看
关键词:微信 摇一摇 DeviceOrientation DeviceMotion
本文介绍使用HTML5的DeviceOrientation特性在微信中实现摇一摇的功能。
在HTML5中,DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间,通过改时间可以获取设备的运动状态、加速度等数据(另还有deviceOrientation事件提供了设备角度、朝向等信息)。
而通过DeviceMotion对设备运动状态的判断,则可以帮助我们在网页上就实现“摇一摇”的交互效果。
运动事件监听
获取加速度信息
“摇一摇”的动作既“一定时间内设备了一定距离”,因此通过监听上一步获取到的x, y, z 值在一定时间范围内的变化率,即可进行设备是否有进行晃动的判断。而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。
运行代码编辑代码查看源代码资源添加向导
效果图
代码下载
关注方倍工作室微信,回复“D108”
本文介绍使用HTML5的DeviceOrientation特性在微信中实现摇一摇的功能。
在HTML5中,DeviceOrientation特性所提供的DeviceMotion事件封装了设备的运动传感器时间,通过改时间可以获取设备的运动状态、加速度等数据(另还有deviceOrientation事件提供了设备角度、朝向等信息)。
而通过DeviceMotion对设备运动状态的判断,则可以帮助我们在网页上就实现“摇一摇”的交互效果。
运动事件监听
if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', deviceMotionHandler, false); } else { alert('你的手机太差了,扔掉买个新的吧。__方倍工作室'); }
获取加速度信息
“摇一摇”的动作既“一定时间内设备了一定距离”,因此通过监听上一步获取到的x, y, z 值在一定时间范围内的变化率,即可进行设备是否有进行晃动的判断。而为了防止正常移动的误判,需要给该变化率设置一个合适的临界值。
运行代码编辑代码查看源代码资源添加向导
function deviceMotionHandler(eventData) { var acceleration = eventData.accelerationIncludingGravity; var curTime = new Date().getTime(); if ((curTime - last_update) > 100) { var diffTime = curTime - last_update; last_update = curTime; x = acceleration.x; y = acceleration.y; z = acceleration.z; var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; var status = document.getElementById("status"); if (speed > SHAKE_THRESHOLD) { doResult(); } last_x = x; last_y = y; last_z = z; } }
效果图
代码下载
关注方倍工作室微信,回复“D108”
相关文章推荐
- 微信公众平台开发最佳实践(第2版)
- 微信支付现金红包接口
- 微信自定义菜单扩容?
- 微信连Wi-Fi专业设备列表
- 微信“摇一摇·周边”正式开放
- 微信支付开发(3) 对账单
- 微信公众平台开发(106) 网页获取用户地理位置
- 微信自定义菜单生成器
- 微信公众平台开发(107) 分享到朋友圈和发送给好友
- 微信支付开发(4) 动态链接Native支付
- 微信行业解决方案
- 微信支付样例
- 微信公众平台开发(108) 微信摇一摇
- 微信公众平台开发最佳实践(第2版)
- 微信裂变红包
- 微信红包限额提升方法
- 微信朋友圈运营规则
- 微信公众平台开发问答
- 微信公众号新功能-原创声明、赞赏功能、评论管理、页面模版
- 微信公众平台开发(109) 个性化菜单