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


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 相关文章推荐
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
Jan 09 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
可以将word转成html的js代码
Apr 11 Javascript
通过onmouseover选项卡实现img图片的变化
Feb 12 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
基于JavaScript表单脚本(详解)
Oct 18 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
详解ES6 Promise对象then方法链式调用
Oct 20 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
JS实现躲避粒子小游戏
Jun 18 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
PHP文本操作类
2006/11/25 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
Vue关于数据绑定出错解决办法
2017/05/15 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python 接口返回的json字符串实例
2018/03/27 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
python字符串Intern机制详解
2019/07/01 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python 实现多维数组(array)排序
2020/02/28 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
益模软件Java笔试题
2012/03/27 面试题
优秀社区干部事迹材料
2014/02/03 职场文书
外贸专业求职信
2014/03/09 职场文书
公司股权转让协议书
2014/04/12 职场文书
爱情保证书大全
2014/04/29 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
2015年教师节广播稿
2015/08/19 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书