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


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 相关文章推荐
一个报数游戏js版(约瑟夫环问题)
Aug 05 Javascript
jquery模拟SELECT下拉框取值效果
Oct 23 Javascript
jsonp原理及使用
Oct 28 Javascript
jQuery的:parent选择器定义和用法
Jul 01 Javascript
js使用removeChild方法动态删除div元素
Aug 01 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
Jan 05 Javascript
简单介绍jsonp 使用小结
Jan 27 Javascript
JavaScript实现简单的拖动效果
Jul 02 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
Nov 15 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
JS+HTML+CSS实现轮播效果
Nov 28 Javascript
详解Vue router路由
Nov 20 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php adodb介绍
2009/03/19 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
json 定义
2008/06/10 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
js 概率计算(简单版)
2017/09/12 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
十个Python程序员易犯的错误
2015/12/15 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
Django组件content-type使用方法详解
2019/07/19 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
银行实习生的自我评价
2014/01/13 职场文书
第二课堂活动总结
2014/05/07 职场文书
综合办公室岗位职责
2015/04/11 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏