html5 抽奖效果,基于HTML5 canvas的简单抽奖轮盘
时间: 2023-08-03 12:30:05 浏览: 287
好的,以下是一个基于HTML5 canvas的简单抽奖轮盘的代码示例,可以实现抽奖效果:
HTML代码:
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>抽奖轮盘</title>
<style>
canvas {
border: 1px solid #ccc;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<button id="btn" onclick="start()">开始抽奖</button>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="prize.js"></script>
</body>
</html>
```
JavaScript代码(prize.js):
```
// 获取canvas元素
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
// 奖品列表
var prizes = [
'一等奖',
'二等奖',
'三等奖',
'四等奖',
'五等奖'
];
// 奖品数量
var prizeCount = prizes.length;
// 起始角度
var startAngle = 0;
// 扇形角度
var arc = Math.PI / (prizeCount / 2);
// 绘制轮盘
function drawRouletteWheel() {
// 清空画布
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 绘制每个扇形
for (var i = 0; i < prizeCount; i++) {
var angle = startAngle + i * arc;
ctx.fillStyle = '#fff';
ctx.beginPath();
ctx.arc(canvas.width / 2, canvas.height / 2, 100, angle, angle + arc, false);
ctx.arc(canvas.width / 2, canvas.height / 2, 50, angle + arc, angle, true);
ctx.stroke();
ctx.fill();
// 绘制奖品名称
ctx.save();
ctx.fillStyle = '#000';
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.rotate(angle + arc / 2 + Math.PI / 2);
var text = prizes[i];
ctx.fillText(text, -ctx.measureText(text).width / 2, 0);
ctx.restore();
}
}
// 开始抽奖
var prizeIndex = -1;
var isRunning = false;
function start() {
if (isRunning) return;
isRunning = true;
// 随机一个奖品
var random = Math.floor(Math.random() * prizeCount);
prizeIndex = random;
// 转动轮盘
var count = 8;
var speed = 0.2;
var delay = 100;
var timer = setInterval(function() {
startAngle += speed;
drawRouletteWheel();
if (count > 0) {
count--;
speed += 0.1;
} else if (delay > 0) {
delay -= 10;
} else {
clearInterval(timer);
isRunning = false;
alert('恭喜您获得了' + prizes[prizeIndex] + '!');
}
}, delay);
}
// 绘制轮盘
drawRouletteWheel();
```
该代码使用canvas绘制了一个轮盘,点击“开始抽奖”按钮后,轮盘会开始转动,最终停在一个随机的奖品上,并弹出获奖提示框。
注意:该代码仅供参考,实际使用时需要根据具体需求进行修改和优化。
阅读全文