HTML 5の重要な特性であるDeviceOrientationを利用して、携帯電話のウェブサイト上の揺れ機能を実現する

7545 ワード

変換元:
<script>

// DeviceOrientation                      ,   DOM     。

//

// 1、deviceOrientation:             ,                (       、      )。

// 2、deviceMotion:           ,                    。

//        ,           、         。



//      Native                 ——    ,     、      、      。。。

//    android  ios                 ,    ,                     。



// OK,         ,  ~

//                 —— DeviceMotionEvent:                 ,                :

// x:        ;

// y:        ;

// z:      。

//                ,            :

// 1、accelerationIncludingGravity(       )

// 2、acceleration(          )



//     ,         ,come on,    !



//                 

function init(){

  if (window.DeviceMotionEvent) {

    //              

    window.addEventListener('devicemotion', deviceMotionHandler, false);

    $("#yaoyiyaoyes").show();

  } else{

    //               

    $("#yaoyiyaono").show();

  } 

}



//   ,                 ?           :

// 1、                            ;

// 2、           x、y、z                ;

// 3、                   (      ,              )。

//        ,               ,      ,               ,                     。



//

var SHAKE_THRESHOLD = 3000;

//                

var last_update = 0;

//      x、y、z                  

var x;

var y;

var z;

var last_x;

var last_y;

var last_z;



//

var count = 0;



function deviceMotionHandler(eventData) {

  //          

  var acceleration = eventData.accelerationIncludingGravity; 



  //       

  var curTime = new Date().getTime(); 

  var diffTime = curTime -last_update;

  //      

  if (diffTime > 100) {

    last_update = curTime; 



    x = acceleration.x; 

    y = acceleration.y; 

    z = acceleration.z; 



    var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; 



    if (speed > SHAKE_THRESHOLD) { 

      // TODO:                       

      count++;

      $("#yaoyiyaoyes").hide();

      $("#yaoyiyaoresult").show();

      $("#yaoyiyaoresult").html("   ! " + count + "  !");

    }



    last_x = x; 

    last_y = y; 

    last_z = z; 

  } 

} 

</script>

<div id="yaoyiyaono" style="font-size:20px;margin:10px;line-height:35px;display:none;">

    ,       ,         ,          ,  :</br>

  1、     PC     ,      ,        ;</br>

  2、    Android  ,        ,android          ,    UCWeb、chrome       ;</br>

  3、             ,       :      !!!</br>

</div>

<div id="yaoyiyaoyes" style="font-size:20px;margin:10px;line-height:50px;display:none;">

    ,    ,               !

</div>

<div id="yaoyiyaoresult" style="font-size:20px;margin:10px;line-height:50px;display:none;"></div>

<script>

$(document).ready(function(){

init();

});

</script>