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


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 相关文章推荐
jQuery 1.0.2
Oct 11 Javascript
javascript+dom树型菜单类,希望朋友们一起进步
May 03 Javascript
jQuery 中关于CSS操作部分使用说明
Jun 10 Javascript
JScript 脚本实现文件下载 一般用于下载木马
Oct 29 Javascript
JS对象与JSON格式数据相互转换
Feb 20 Javascript
MultiSelect左右选择控件的设计与实现介绍
Jun 08 Javascript
JQuery插件开发示例代码
Nov 06 Javascript
JS仿Windows开机启动Loading进度条的方法
Feb 26 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
Oct 26 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
Jun 08 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 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程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
python中sleep函数用法实例分析
2015/04/29 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python中的取模运算方法
2018/11/10 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python实现电子词典
2020/03/03 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
公司口号大全
2014/06/11 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
索尼ICF-5900W收音机测评
2022/04/24 无线电