分享网页检测摇一摇实例代码


Posted in Javascript onJanuary 14, 2016

废话不多说了,直接给大家贴代码了,具体代码如下所示:

var Shaker = function(f){
// 摇一摇: 检测到3次摇动算一次摇一摇, 摇动后调用处理函数, 不再检测摇动
// f 摇动后的回调
this.callback = f;
this.status = 0; // 0: 侦听未开始 1: 侦听开始 
this.speed = 15;
this.lastX = this.lastY = this.lastZ = 0;
this.num = 0; // 检测触发次数
this.minNum = 3; // 最小检测触发次数
this.beginSecond = 0; // 开始检测的秒数
this.maxSecond = 3; // 最大间隔秒数
this.handlerWrap = function(){};
}
Shaker.prototype.listen = function(){
// 侦听摇动
var that = this;
if (this.status == 0 && window.DeviceMotionEvent) {
this.status = 1;
this.handlerWrap = function(event){
that.handler(event)
}
window.addEventListener('devicemotion', this.handlerWrap, false);
}
}
Shaker.prototype.release = function(){
// 停止侦听
if(this.status == 1){
if (window.DeviceMotionEvent) {
window.removeEventListener('devicemotion', this.handlerWrap);
}
this.status = 0;
this.num = 0;
}
}
Shaker.prototype.reset = function(){
// 重置检测
if(this.status == 1){
this.num = 0;
}
}
Shaker.prototype.handler = function(event){
// 传感器事件处理
if(this.status == 1){
var acceleration =event.accelerationIncludingGravity;
var x = acceleration.x;
var y = acceleration.y;
var z = acceleration.z;
if( Math.abs(x-this.lastX) > this.speed || 
Math.abs(y-this.lastY) > this.speed || 
Math.abs(z-this.lastZ) > this.speed ) 
{
if(this.num == 0){
this.beginSecond = Date.parse(new Date()) / 1000
}
this.num += 1;
}
this.lastX = x;
this.lastY = y;
this.lastZ = z;
if(this.num >= this.minNum){
var now = Date.parse(new Date()) / 1000;
if(now - this.beginSecond <= this.maxSecond){
this.release();
if(this.callback){
this.callback();
}
}
this.reset();
}
}
}

用法:

var s = new Shaker(function(){ /*摇动后的回调*/ });
s.listen();

好了,本文所述给大家介绍到这里,后续还会持续更新,希望本文给大家分享网页检测摇一摇实例代码的相关知识对大家有所帮助。

Javascript 相关文章推荐
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
使用ajax+jqtransform实现动态加载select
Dec 01 Javascript
JavaScript生成随机字符串的方法
Mar 19 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
Javascript 实现计算器时间功能详解及实例(二)
Jan 08 Javascript
React Hooks 实现和由来以及解决的问题详解
Jan 17 Javascript
Node 模块原理与用法详解
May 13 Javascript
vue组件开发之tab切换组件使用详解
Aug 21 Javascript
vue首次渲染全过程
Apr 21 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
vue实现可拖拽的dialog弹框
May 13 Vue.js
jquery淡入淡出效果简单实例
Jan 14 #Javascript
jQuery实现的左右移动焦点图效果
Jan 14 #Javascript
详解JavaScript中的构造器Constructor模式
Jan 14 #Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 #Javascript
jQuery遮罩层效果实例分析
Jan 14 #Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 #Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
Jan 14 #Javascript
You might like
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
php 实现301重定向跳转实例代码
2016/07/18 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
Python基础教程之异常详解
2019/01/10 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
np.random.seed() 的使用详解
2020/01/14 Python
浅析matlab中imadjust函数
2020/02/27 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
邀请函的格式
2015/01/30 职场文书
培养联系人考察意见
2015/06/01 职场文书
纪委立案决定书
2015/06/24 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android