博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6摇一摇类库
阅读量:6785 次
发布时间:2019-06-26

本文共 3221 字,大约阅读时间需要 10 分钟。

import shake from "./shake.js";    let shake = new shake();    //会默认启动监听,如果需要二次启动必须使停止监听以后    shake.stop(); //移除监听    shake.start();//开始监听    //let shake = new shake({step:300,stopTime:3000}) 复制代码
参数 说明 例子
step 晃动力度 {step:300}默认300
stopTime 结束时常 {stopTime:3000}默认3000
event 事件监听 start,actio,stop
start 开始 on("start",fn)
actio 摇动中 on("action",fn)
stop 结束 on("stop",(number,th)=>{})
number,th number:摇动次数 th: 当前指针
/** * 摇一摇 * @class shake * let shake = new shake({step:300,stopTime:3000})  * step:晃动力度 * stopTime:停止时常 * event: start action stop   * shake.on("start",(number,this)) * number: 摇动次数 * this: shake类 */class shake{    constructor(arg){        this.mot={            step:300, //摇动力度            stopTime:3000,//秒停止            last_update: 0,             x:0,             y:0,              z:0,              last_x:0,              last_y:0,              last_z:0,             pow:1       }       this.time=0;       Object.assign(this.mot,arg);       this.bindEvent();       this.handEvent=[];//记录       this.check=1;//是否启动中    }      setTime=()=>{        clearTimeout(this.time);        this.time = setTimeout(arg=>{           // this.unbindEvent();            this.triger("stop");            this.mot.pow=1;        },3000)    }    on(ev,callback){        callback = callback||(function(){});        let fn = this.handEvent.find(arg=>arg.event);        if(!fn){             this.handEvent.push({
event:ev,callback}) } return this; } start(){ if(this.check==0){ this.bindEvent(); } } stop(){ this.check=0; this.unbindEvent(); return this; //this.handEvent=[];//记录 } triger(ev){ let fn = this.handEvent.find(arg=>arg.ev); switch(ev){ case "start": case "action": case "stop":console.log(ev);break; } if(fn){ fn.callback(this.mot.pow,this); } } bindSelfEvent=()=>{ } bindEvent(){ //监控摇一摇 window.addEventListener("devicemotion", this.EVENT_Deviceorientation, false); } unbindEvent(){ Object.assign(this.mot,{ pow:1}); window.removeEventListener("devicemotion",this.EVENT_Deviceorientation); } EVENT_Deviceorientation=(eventData)=>{ var acceleration = eventData.accelerationIncludingGravity; var curTime = new Date().getTime(); if ((curTime - this.mot.last_update) > 300) { var diffTime = curTime - this.mot.last_update; this.mot.last_update = curTime; this.mot.x = acceleration.x; this.mot.y = acceleration.y; this.mot.z = acceleration.z; var speed = Math.abs(this.mot.x + this.mot.y + this.mot.z - this.mot.last_x - this.mot.last_y - this.mot.last_z) / diffTime * 10000; if (speed > this.mot.step) { if(this.mot.pow==1){ this.triger("start"); } this.triger("action"); this.mot.pow+=1; this.setTime(); } this.mot.last_x = this.mot.x; this.mot.last_y = this.mot.y; this.mot.last_z = this.mot.z; } }}export default shake;复制代码

转载地址:http://rudgo.baihongyu.com/

你可能感兴趣的文章
判断页数及切换
查看>>
GraphQL ---02 GraphQL和C#结合的实战项目
查看>>
Vmware虚拟机三种网络模式详解
查看>>
【已解决】如图,说我磁盘不够,看到var目录下有的个隐藏文件夹占了46G,不知道怎么删除...
查看>>
[LintCode] O(1)检测2的幂次
查看>>
BZOJ3295:[CQOI2011]动态逆序对——题解
查看>>
Office Online简介
查看>>
房天下爬虫
查看>>
常用Shell脚本命令(备忘)
查看>>
Python中的__init__,__call__
查看>>
如何设置Navicat的显示字体与字体大小?
查看>>
【转】HttpServlet详解
查看>>
项目 04 数据库迁移工具,增加用户系统-用户中心
查看>>
程序员小笑话
查看>>
DataTable AsEnumerable 的使用
查看>>
JS滚轮事件(mousewheel/DOMMouseScroll)了解
查看>>
GDI+与GDI屏幕抓图比较
查看>>
mysql中date_add()函数的使用?
查看>>
Window系统查找并关闭进程中的端口
查看>>
BZOJ2151种树——模拟费用流+链表+堆
查看>>