例子:
PS: coordinate为得到重力感应的x,y,z坐标
//======================Orientation======================================= var coordinate = { x : 0, y : 0, z : 0 }; function Orientation(selector) { } Orientation.prototype.init = function() { window.addEventListener('deviceorientation', this.orientationListener,false); window.addEventListener('MozOrientation', this.orientationListener,false); window.addEventListener('devicemotion', this.orientationListener,false); } var orientDate = 0; Orientation.prototype.orientationListener = function(evt) { // For FF3.6+ if (!evt.gamma && !evt.beta) { // angle=radian*180.0/PI 在firefox中x和y是弧度值, evt.gamma = (evt.x * (180 / Math.PI)); //转换成角度值, evt.beta = (evt.y * (180 / Math.PI)); //转换成角度值 evt.alpha = (evt.z * (180 / Math.PI)); //转换成角度值 } /* beta: -180..180 (rotation around x axis) */ /* gamma: -90..90 (rotation around y axis) */ /* alpha: 0..360 (rotation around z axis) (-180..180) */ var gamma = evt.gamma var beta = evt.beta var alpha = evt.alpha if (evt.accelerationIncludingGravity) { // window.removeEventListener('deviceorientation', this.orientationListener, false); gamma = event.accelerationIncludingGravity.x * 10 beta = -event.accelerationIncludingGravity.y * 10 alpha = event.accelerationIncludingGravity.z * 10 } if (this._lastGamma != gamma || this._lastBeta != beta) { //document.querySelector("#test2").innerHTML = "c-x: "+beta.toFixed(2)+" c-y:"+gamma.toFixed(2)+" c-z:"+(alpha != null ? alpha.toFixed(2) : 0)+ "<br> o-x: " + coordinate.x + " o-y: " + coordinate.y + " o-z: " + coordinate.z; coordinate.x = beta.toFixed(2); coordinate.y = gamma.toFixed(2); coordinate.z = (alpha != null ? alpha.toFixed(2) : 0); //websocket("coor",coordinate.x+","+coordinate.y+","+coordinate.z); /* document.querySelector("#test").innerHTML = "x: " + coordinate.x + " y: " + coordinate.y + " z: " + coordinate.z; */ //Math.max() this._lastGamma = gamma; this._lastBeta = beta; } }; $(function(){ (new Orientation()).init(); });
PS: coordinate为得到重力感应的x,y,z坐标