以下是一个使用JavaScript实现简单摇一摇抽奖功能的示例代码:
一、基础概念
devicemotion
事件)来检测设备的摇晃动作。这个事件会在设备运动状态改变时触发,包含有关设备加速度的信息。二、代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF - 8">
<meta name="viewport" content="width=device-width, initial - scale = 1.0">
<title>摇一摇抽奖</title>
<style>
#result {
font - size: 24px;
margin - top: 20px;
}
</style>
</head>
<body>
<h1>摇一摇抽奖</h1>
<div id="result">摇一摇开始</div>
<script>
let lastX = 0;
let lastY = 0;
let lastZ = 0;
let shakeThreshold = 15;
let shakeCount = 0;
let lastShakeTime = 0;
const resultDiv = document.getElementById('result');
window.addEventListener('devicemotion', function (event) {
const acceleration = event.accelerationIncludingGravity;
const curX = acceleration.x;
const curY = acceleration.y;
const curZ = acceleration.z;
if (Math.abs(curX - lastX) > shakeThreshold || Math.abs(curY - lastY) > shakeThreshold ||
Math.abs(curZ - lastZ) > shakeThreshold) {
const currentTime = new Date().getTime();
if (currentTime - lastShakeTime > 300) {
shakeCount++;
lastShakeTime = currentTime;
}
}
lastX = curX;
lastY = curY;
lastZ = curZ;
if (shakeCount >= 3) {
// 这里可以添加抽奖逻辑,例如随机抽取一个奖品
const prizes = ['一等奖', '二等奖', '三等奖', '谢谢参与'];
const randomIndex = Math.floor(Math.random() * prizes.length);
resultDiv.innerText = '恭喜你获得:' + prizes[randomIndex];
shakeCount = 0;
}
});
</script>
</body>
</html>
三、优势
四、应用场景
五、可能遇到的问题及解决方法
devicemotion
事件。shakeThreshold
)和时间间隔(300
毫秒这里)来减少误判。同时,可以增加更多的判断条件,例如要求在一定时间内摇晃的次数达到一定数量(这里是3次)。领取专属 10元无门槛券
手把手带您无忧上云