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

首頁 > 編程 > HTML > 正文

HTML5 DeviceOrientation實(shí)現(xiàn)手機(jī)網(wǎng)站搖一搖功能代碼實(shí)

2020-03-22 19:37:15
字體:
供稿:網(wǎng)友
介紹之前做兩個(gè)聲明:以下代碼可以直接運(yùn)行,當(dāng)然你別忘了引用jQuery才行。

復(fù)制代碼代碼如下:
script
// DeviceOrientation將底層的方向傳感器和運(yùn)動(dòng)傳感器進(jìn)行了高級(jí)封裝,提供了DOM事件的支持。
// 這個(gè)特性包括兩個(gè)事件:
// 1、deviceOrientation:封裝了方向傳感器數(shù)據(jù)的事件,可以獲取手機(jī)靜止?fàn)顟B(tài)下的方向數(shù)據(jù)(手機(jī)所處的角度、方位和朝向等)。
// 2、deviceMotion:封裝了運(yùn)動(dòng)傳感器的事件,可以獲取手機(jī)運(yùn)動(dòng)狀態(tài)下的運(yùn)動(dòng)加速度等數(shù)據(jù)。
// 使用這兩個(gè)事件,可以很能夠?qū)崿F(xiàn)重力感應(yīng)、指南針等有趣的功能。 /p p // 現(xiàn)在在很多Native應(yīng)用中有一個(gè)非常常見而時(shí)尚的功能 搖一搖,搖一搖找人、搖一搖看新聞、搖一搖找金幣。。。
// 也許在android或者ios的客戶端上對(duì)這個(gè)功能你已經(jīng)很了解了,但是現(xiàn)在,我將告訴你如何在手機(jī)網(wǎng)頁上實(shí)現(xiàn)搖一搖的功能。 /p p // OK,那我們現(xiàn)在就開始吧,嘿嘿~
// 先來讓我們了解一下設(shè)備運(yùn)動(dòng)事件 DeviceMotionEvent:返回設(shè)備關(guān)于加速度和旋轉(zhuǎn)的相關(guān)信息,其中加速度的數(shù)據(jù)包含以下三個(gè)方向:
// x:橫向貫穿手機(jī)屏幕;
// y:縱向貫穿手機(jī)屏幕;
// z:垂直手機(jī)屏幕。
// 鑒于有些設(shè)備沒有排除重力的影響,所以該事件會(huì)返回兩個(gè)屬性:
// 1、accelerationIncludingGravity(含重力的加速度)
// 2、acceleration(排除重力影響的加速度) /p p // 作為碼農(nóng),上代碼才是最直接的,come on,代碼走起! /p p // 首先在頁面上要監(jiān)聽運(yùn)動(dòng)傳感事件
function init(){
if (window.DeviceMotionEvent) {
// 移動(dòng)瀏覽器支持運(yùn)動(dòng)傳感事件
window.addEventListener('devicemotion', deviceMotionHandler, false);
$("#yaoyiyaoyes").show();
} else{
// 移動(dòng)瀏覽器不支持運(yùn)動(dòng)傳感事件
$("#yaoyiyaono").show();
}
} /p p // 那么,我們?nèi)绾斡?jì)算用戶是否是在搖動(dòng)手機(jī)呢?可以從以下幾點(diǎn)進(jìn)行考慮:
// 1、其實(shí)用戶在搖動(dòng)手機(jī)的時(shí)候始終都是以一個(gè)方向?yàn)橹鬟M(jìn)行搖動(dòng)的;
// 2、用戶在搖動(dòng)手機(jī)的時(shí)候在x、y、z三個(gè)方向都會(huì)有相應(yīng)的想速度的變化;
// 3、不能把用戶正常的手機(jī)運(yùn)動(dòng)行為當(dāng)做搖一搖(手機(jī)放在兜里,走路的時(shí)候也會(huì)有加速度的變化)。
// 從以上三點(diǎn)考慮,針對(duì)三個(gè)方向上的加速度進(jìn)行計(jì)算,間隔測量他們,考察他們?cè)诠潭〞r(shí)間段里的變化率,而且需要確定一個(gè)閥值來觸發(fā)搖一搖之后的操作。 /p p // 首先,定義一個(gè)搖動(dòng)的閥值
var SHAKE_THRESHOLD = 3000;
// 定義一個(gè)變量保存上次更新的時(shí)間
var last_update = 0;
// 緊接著定義x、y、z記錄三個(gè)軸的數(shù)據(jù)以及上一次出發(fā)的時(shí)間
var x;
var y;
var z;
var last_x;
var last_y;
var last_z; /p p // 為了增加這個(gè)例子的一點(diǎn)無聊趣味性,增加一個(gè)計(jì)數(shù)器
var count = 0; /p p function deviceMotionHandler(eventData) {
// 獲取含重力的加速度
var acceleration = eventData.accelerationIncludingGravity; /p p // 獲取當(dāng)前時(shí)間
var curTime = new Date().getTime();
var diffTime = curTime -last_update;
// 固定時(shí)間段
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:在此處可以實(shí)現(xiàn)搖一搖之后所要進(jìn)行的數(shù)據(jù)邏輯操作
count++;
$("#yaoyiyaoyes").hide();
$("#yaoyiyaoresult").show();
$("#yaoyiyaoresult").html("搖你妹!第" + count + "個(gè)了!");
} /p p last_x = x;
last_y = y;
last_z = z;
}
}
/script
div id="yaoyiyaono"
兄弟,如果您看到了我,說明您現(xiàn)在還不能搖,不是說您沒有資格用我,而是: /br
1、如果您使用PC機(jī)的瀏覽器,那可就不對(duì)了,我只愛手機(jī)瀏覽器; /br
2、如果您是Android手機(jī),那不好意思告訴你,android自帶的瀏覽器拋棄了我,您可以用UCWeb、chrome等第三方瀏覽器; /br
3、如果您都不屬于以上兩種情況,那我只有告訴您:您改換手機(jī)啦!!! /br
/div
div id="yaoyiyaoyes"
兄弟,搖一個(gè)吧,說不定有一個(gè)清純的妹子等著你呢!
/div
div id="yaoyiyaoresult" /div
script
$(document).ready(function(){
init();
});
/script
html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳普湖县| 尉犁县| 隆德县| 长武县| 防城港市| 镇江市| 舟曲县| 正蓝旗| 茂名市| 宜兰市| 区。| 双流县| 华蓥市| 无为县| 浮山县| 九龙城区| 时尚| 汕头市| 蒙阴县| 乌苏市| 增城市| 巧家县| 河间市| 濉溪县| 广饶县| 福贡县| 天水市| 喀喇| 长寿区| 孟津县| 饶河县| 漳浦县| 塘沽区| 武功县| 高淳县| 罗定市| 郴州市| 罗定市| 射阳县| 东乌珠穆沁旗| 富源县|