canvas绘制转盘抽奖
时间: 2024-06-14 08:01:33 浏览: 155
Canvas是HTML5中新增的标签,可以用来绘制图形。转盘抽奖是一个非常有趣的应用场景,可以通过canvas来实现。
具体实现步骤如下:
1. 创建canvas元素并设置宽高
2. 获取canvas的2D绘图上下文
3. 绘制圆形背景
4. 绘制奖品文字和对应的扇形区域
5. 绘制指针
6. 添加旋转动画,使转盘转动起来
7. 添加抽奖事件,根据旋转角度计算出中奖的奖品
相关代码实现可以参考以下链接:https://www.jianshu.com/p/4cb2b6aaf39e
相关问题
html转盘游戏代码,html5 canvas大转盘抽奖提示代码
以下是一个简单的 HTML5 Canvas 转盘游戏代码示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>转盘游戏</title>
<meta charset="utf-8">
<style type="text/css">
canvas {
border: 1px solid #000;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<button id="btn" onClick="spin()">开始抽奖</button>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var colors = ["#FFA07A", "#FFD700", "#FFA500", "#FF4500", "#FF69B4", "#DA70D6", "#7B68EE", "#4169E1", "#00BFFF", "#00FF00", "#FFFF00", "#FF1493"];
var slices = colors.length;
var sliceDeg = 360/slices;
var deg = 0;
var speed = 0;
var slowDownRand = 0;
var ctxW = canvas.width;
var ctxH = canvas.height;
var centerX = ctxW/2;
var centerY = ctxH/2;
var spinButton = document.getElementById("btn");
function deg2rad(deg) {
return deg * Math.PI/180;
}
function drawSlice(deg, color) {
ctx.beginPath();
ctx.fillStyle = color;
ctx.moveTo(centerX, centerY);
ctx.arc(centerX, centerY, 150, deg2rad(deg), deg2rad(deg+sliceDeg));
ctx.lineTo(centerX, centerY);
ctx.fill();
}
function drawText(deg, text) {
ctx.save();
ctx.translate(centerX, centerY);
ctx.rotate(deg2rad(deg));
ctx.textAlign = "center";
ctx.fillStyle = "#fff";
ctx.font = "bold 20px sans-serif";
ctx.fillText(text, 100, 0);
ctx.restore();
}
function draw() {
for (var i = 0; i < slices; i++) {
drawSlice(deg, colors[i]);
drawText(deg+sliceDeg/2, "奖项" + (i+1));
deg += sliceDeg;
}
}
function spin() {
spinButton.disabled = true;
speed = 30;
slowDownRand = Math.floor(Math.random() * 10) + 1;
rotateWheel();
}
function rotateWheel() {
ctx.clearRect(0, 0, ctxW, ctxH);
draw();
if (speed > 0) {
speed -= 1;
deg += speed;
}
if (speed == 0) {
var landed = Math.floor(((360 - deg - 90) % 360) / sliceDeg);
//提示中奖信息
alert("恭喜您获得:" + (landed+1) + "号奖项!");
spinButton.disabled = false;
}
if (speed < 0) {
speed += 1;
deg += speed;
}
if (slowDownRand == 0) {
speed = 0;
}
slowDownRand--;
requestAnimationFrame(rotateWheel);
}
draw();
</script>
</body>
</html>
```
这个示例使用 Canvas 绘制了一个 12 个奖项的转盘,并且通过 JavaScript 控制转盘的旋转和停止。当用户点击“开始抽奖”按钮时,转盘开始旋转,最终停在一个随机的奖项上,并弹出一个提示框显示中奖信息。
注:这只是一个简单的示例,实际的转盘游戏可能需要更复杂的逻辑和 UI 设计。
阅读全文