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


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 函数中的参数使用分析
Mar 27 Javascript
一个简单的jQuery插件制作 学习过程及实例
Apr 25 Javascript
js中的push和join方法使用介绍
Oct 08 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
js中的json对象详细介绍
Oct 29 Javascript
使用ajax+jqtransform实现动态加载select
Dec 01 Javascript
js鼠标悬浮出现遮罩层的方法
Jan 28 Javascript
详细解读AngularJS中的表单验证编程
Jun 19 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
Vue axios 跨域请求无法带上cookie的解决
Sep 08 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将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php中动态变量用法实例
2015/06/10 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
Django模板Templates使用方法详解
2019/07/19 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
副厂长岗位职责
2014/02/02 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
保护环境建议书100字
2014/05/13 职场文书
考试作弊检讨书
2014/10/21 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
2014年图书室工作总结
2014/12/09 职场文书
自我工作评价范文
2015/03/06 职场文书
旷工辞退通知书
2015/04/17 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers