DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> HTML5 DeviceOrientation實現手機網站搖一搖功能代碼實例
HTML5 DeviceOrientation實現手機網站搖一搖功能代碼實例
編輯:HTML5詳解     
這篇文章主要介紹了Html5 DeviceOrIEntation實現手機網站搖一搖功能代碼實例,本文直接給出實現代碼,需要的朋友可以參考下

介紹之前做兩個聲明:

以下代碼可以直接運行,當然你別忘了引用jQuery才行。

復制代碼代碼如下:
<script>
// DeviceOrIEntation將底層的方向傳感器和運動傳感器進行了高級封裝,提供了DOM事件的支持。
// 這個特性包括兩個事件:
// 1、deviceOrIEntation:封裝了方向傳感器數據的事件,可以獲取手機靜止狀態下的方向數據(手機所處的角度、方位和朝向等)。
// 2、deviceMotion:封裝了運動傳感器的事件,可以獲取手機運動狀態下的運動加速度等數據。
// 使用這兩個事件,可以很能夠實現重力感應、指南針等有趣的功能。</p><p>// 現在在很多Native應用中有一個非常常見而時尚的功能 —— 搖一搖,搖一搖找人、搖一搖看新聞、搖一搖找金幣。。。
// 也許在android或者iOS的客戶端上對這個功能你已經很了解了,但是現在,我將告訴你如何在手機網頁上實現搖一搖的功能。</p><p>// OK,那我們現在就開始吧,嘿嘿~
// 先來讓我們了解一下設備運動事件 —— DeviceMotionEvent:返回設備關於加速度和旋轉的相關信息,其中加速度的數據包含以下三個方向:
// x:橫向貫穿手機屏幕;
// y:縱向貫穿手機屏幕;
// z:垂直手機屏幕。
// 鑒於有些設備沒有排除重力的影響,所以該事件會返回兩個屬性:
// 1、accelerationIncludingGravity(含重力的加速度)
// 2、acceleration(排除重力影響的加速度)</p><p>// 作為碼農,上代碼才是最直接的,come on,代碼走起!</p><p>// 首先在頁面上要監聽運動傳感事件 
function init(){
  if (window.DeviceMotionEvent) {
    // 移動浏覽器支持運動傳感事件
    window.addEventListener('devicemotion', deviceMotionHandler, false);
    $("#yaoyiyaoyes").show();
  } else{
    // 移動浏覽器不支持運動傳感事件
    $("#yaoyiyaono").show();
  } 
}</p><p>// 那麼,我們如何計算用戶是否是在搖動手機呢?可以從以下幾點進行考慮:
// 1、其實用戶在搖動手機的時候始終都是以一個方向為主進行搖動的;
// 2、用戶在搖動手機的時候在x、y、z三個方向都會有相應的想速度的變化;
// 3、不能把用戶正常的手機運動行為當做搖一搖(手機放在兜裡,走路的時候也會有加速度的變化)。
// 從以上三點考慮,針對三個方向上的加速度進行計算,間隔測量他們,考察他們在固定時間段裡的變化率,而且需要確定一個閥值來觸發搖一搖之後的操作。</p><p>// 首先,定義一個搖動的閥值
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;</p><p>// 為了增加這個例子的一點無聊趣味性,增加一個計數器
var count = 0;</p><p>function deviceMotionHandler(eventData) {
  // 獲取含重力的加速度
  var acceleration = eventData.accelerationIncludingGravity; </p><p>  // 獲取當前時間
  var curTime = new Date().getTime(); 
  var diffTime = curTime -last_update;
  // 固定時間段
  if (diffTime > 100) {
    last_update = curTime; </p><p>    x = acceleration.x; 
    y = acceleration.y; 
    z = acceleration.z; </p><p>    var speed = Math.abs(x + y + z - last_x - last_y - last_z) / diffTime * 10000; </p><p>    if (speed > SHAKE_THRESHOLD) { 
      // TODO:在此處可以實現搖一搖之後所要進行的數據邏輯操作
      count++;
      $("#yaoyiyaoyes").hide();
      $("#yaoyiyaoresult").show();
      $("#yaoyiyaoresult").Html("搖你妹!第" + count + "個了!");
    }</p><p>    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>
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved