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


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 相关文章推荐
javascript的键盘控制事件说明
Apr 15 Javascript
基于jquery的大众点评,分类导航实现代码
Aug 23 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
AngularJS基础 ng-value 指令简单示例
Aug 03 Javascript
ajax分页效果(bootstrap模态框)
Jan 23 Javascript
jquery实现超简单的瀑布流布局【推荐】
Mar 08 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
Webpack中publicPath路径问题详解
May 03 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
AJAX检测用户名是否存在的方法
Mar 24 Javascript
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正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
Bootstrap table使用方法详细介绍
2016/12/09 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
JS严格模式知识点总结
2018/02/27 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python reduce 函数使用详解
2017/12/05 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
如何用SQL语句进行模糊查找
2015/09/25 面试题
个人自我鉴定
2013/11/07 职场文书
外贸业务员岗位职责
2013/11/24 职场文书
领导党性分析材料
2014/02/15 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
党员转正申请报告
2015/05/15 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
导游词之太原天龙山
2020/01/02 职场文书
php去除deprecated的实例方法
2021/11/17 PHP