devicemotion是移动端的设备运动事件,是window的事件
event.accelerationIncludingGravity就是设备运动的重力加速度
window.addEventListener("devicemotion",function(event){
var acceleration=event.accelerationIncludingGravity;
var x=acceleration.x; //x方向的加速度
var y=acceleration.y; //y方向的加速度
var z=acceleration.z; //z方向的加速度
},false);
需要注意的是,x,y,z在安卓和iOS上的值是相反的
可以利用重力加速度做一下体感小游戏
下面是利用重力加速度封装的摇一摇事件
function onshake(fn){
var lastX=lastY=lastZ=0;
var speed=50;
window.addEventListener("devicemotion",fnshake,false);
function fnshake(e){
var a=e.accelerationIncludingGravity;
var x=a.x;
var y=a.y;
var z=a.z;
var dis=Math.abs(x-lastX)+Math.abs(y-lastY)+Math.abs(z-lastZ);
if(dis>speed){
fn&&fn();
//当晃动幅度的值大于speed的时候触发
};
lastX=x;
lastY=y;
lastZ=z;
};
};
调用方法
onshake(function(){
alert("摇一摇");
});