HTML5的搖一搖抽獎(jiǎng)功能是目前比較流行的一種互動(dòng)方式,可以帶給用戶更加豐富的體驗(yàn)感。以下是一段使用HTML5實(shí)現(xiàn)的搖一搖抽獎(jiǎng)代碼。
var SHAKE_THRESHOLD = 3000; // 定義搖一搖的閾值 var last_update = 0; var x = y = z = last_x = last_y = last_z = 0; function init() { // 初始化函數(shù),獲取當(dāng)前設(shè)備支持HTML5的加速度傳感器 if (window.DeviceMotionEvent) { window.addEventListener('devicemotion', deviceMotionHandler, false); } else { alert('當(dāng)前設(shè)備不支持HTML5的搖一搖功能!'); } } function deviceMotionHandler(eventData) { // 實(shí)現(xiàn)搖一搖功能 var acceleration = eventData.accelerationIncludingGravity; var curTime = new Date().getTime(); if ((curTime - last_update) >100) { var diffTime = curTime - last_update; 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) { // 執(zhí)行抽獎(jiǎng)操作 } last_x = x; last_y = y; last_z = z; } }
在以上代碼中,首先定義了一個(gè)搖一搖的閾值SHAKE_THRESHOLD,并初始化了各個(gè)變量。然后通過初始化函數(shù)init()獲取當(dāng)前設(shè)備支持HTML5的加速度傳感器,之后實(shí)現(xiàn)了搖一搖功能的函數(shù)deviceMotionHandler()。在該函數(shù)中,獲取當(dāng)前設(shè)備的加速度傳感器數(shù)值,并計(jì)算出速度。當(dāng)速度超過設(shè)定的閾值SHAKE_THRESHOLD時(shí),即可執(zhí)行抽獎(jiǎng)操作。