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


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 相关文章推荐
Display SQL Server Login Mode
Jun 21 Javascript
jQuery 学习入门篇附实例代码
Mar 16 Javascript
js select常用操作控制代码
Mar 16 Javascript
js change,propertychange,input事件小议
Dec 20 Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
浅谈javascript中的DOM方法
Jul 16 Javascript
jqTransform美化表单
Oct 10 Javascript
js重写方法的简单实现
Jul 10 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
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
提问的智慧
2006/10/09 PHP
拼音码表的生成
2006/10/09 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
jquery 新浪网易的评论块制作
2010/07/01 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
Python下载网络小说实例代码
2018/02/03 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
python join方法使用详解
2019/07/30 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
上班迟到检讨书
2014/01/10 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
运动会方队口号
2014/06/07 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python