国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JavaScript > 正文

Html5+JS實現手機搖一搖功能

2020-03-24 18:42:51
字體:
來源:轉載
供稿:網友
HTML5一個重要特性就是DeviceOrientation,它將底層的方向傳感器和運動傳感器進行了高級封裝,提供了DOM事件的支持。這個特性包括兩種事件: 1、 deviceOrientation:封裝了方向傳感器數據的事件,可以獲取手機靜止狀態下的方向數據,例如手機所處角度、方位、朝向等。 2、 deviceMotion:封裝了運動傳感器數據的事件,可以獲取手機運動狀態下的運動加速度等數據。 使用它我們能夠很容易的實現重力感應、指南針等有趣的功能,在手機上將非常有用。例如Opera H5體驗版里的重力感應球示例就是通過監聽DeviceOrientation API的deviceOrientation事件來實現的。 其實它還能幫助我們在網頁上實現一個手機應用里非常常見而時尚的功能:手機搖一搖。 DeviceMotionEvent(設備運動事件)返回設備有關于加速度和旋轉的相關信息。加速度的數據將包含三個軸:x,y和z(示意如下圖所示,x軸橫向貫穿手機屏幕或者筆記本鍵盤,y軸縱向貫穿手機屏幕或筆記本鍵盤,z軸垂直于手機屏幕或筆記本鍵盤)。因為有些設備可能沒有硬件來排除重力的影響,該事件會返回兩個屬性,accelerationIncludingGravity(含重力的加速度)和acceleration(加速度),后者排除了重力的影響。1. [代碼]監聽運動傳感事件
2. [代碼]獲取含重力的加速度
3. [代碼]核心方法實現代碼 HTML5一個重要特性就是DeviceOrientation,它將底層的方向傳感器和運動傳感器進行了高級封裝,提供了DOM事件的支持。這個特性包括兩種事件:1、 deviceOrientation:封裝了方向傳感器數據的事件,可以獲取手機靜止狀態下的方向數據,例如手機所處角度、方位、朝向等。2、 deviceMotion:封裝了運動傳感器數據的事件,可以獲取手機運動狀態下的運動加速度等數據。
使用它我們能夠很容易的實現重力感應、指南針等有趣的功能,在手機上將非常有用。例如Opera H5體驗版里的重力感應球示例就是通過監聽DeviceOrientation
API的deviceOrientation事件來實現的。其實它還能幫助我們在網頁上實現一個手機應用里非常常見而時尚的功能:手機搖一搖。DeviceMotionEvent(設備運動事件)返回設備有關于加速度和旋轉的相關信息。加速度的數據將包含三個軸:x,y和z(示意如下圖所示,x軸橫向貫穿手機屏幕或者筆記本鍵盤,y軸縱向貫穿手機屏幕或筆記本鍵盤,z軸垂直于手機屏幕或筆記本鍵盤)。因為有些設備可能沒有硬件來排除重力的影響,該事件會返回兩個屬性,accelerationIncludingGravity(含重力的加速度)和acceleration(加速度),后者排除了重力的影響。
1. [代碼]監聽運動傳感事件

復制代碼代碼如下:
if (window.DeviceMotionEvent) {
window.addEventListener( devicemotion ,deviceMotionHandler, false);
}

2. [代碼]獲取含重力的加速度

復制代碼代碼如下:
function deviceMotionHandler(eventData) {
var acceleration =eventData.accelerationIncludingGravity;
}

3. [代碼]核心方法實現代碼

復制代碼代碼如下:
var SHAKE_THRESHOLD = xxx;
var last_update = 0;
var x, y, z, last_x, last_y, last_z; /p p function deviceMotionHandler(eventData) {
var acceleration =eventData.accelerationIncludingGravity; /p p var curTime = newDate().getTime(); /p p if ((curTime lastUpdate) 100) { /p p var diffTime = curTime -last_update;
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) {
alert( shaked! );
}
last_x = x;
last_y = y;
last_z = z;
}
}
html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐柏县| 临江市| 香格里拉县| 河源市| 四会市| 米林县| 沙河市| 淅川县| 栾城县| 成都市| 将乐县| 奉节县| 会同县| 普宁市| 托里县| 金湖县| 凤山县| 梁河县| 水富县| 长汀县| 诏安县| 大同市| 腾冲县| 肇源县| 探索| 黄浦区| 玛纳斯县| 双流县| 宣汉县| 威远县| 丰城市| 平度市| 周至县| 宁阳县| 肃北| 阿图什市| 呼伦贝尔市| 陵川县| 札达县| 玛沁县| 云南省|