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

时间:2021-05-25

废话不多说了,直接给大家贴代码了,具体代码如下所示:

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();

好了,本文所述给大家介绍到这里,后续还会持续更新,希望本文给大家分享网页检测摇一摇实例代码的相关知识对大家有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章