如何用canvas实现刮刮乐自助"/>
如何用canvas实现刮刮乐自助
目录
精心布局
执行计划
“这一次我要将失去的都拿回来” 结婚十年,最好的闺蜜竟然勾引我老公,我无数次的忍耐换来的却是变本加厉, 点个关注聆听我的复仇计划
精心布局
准备一个canvas元素, 在准备一个显示中奖结果的盒子,让两个元素叠在一起,刮卡的时候,再让ggl盒子里面的内容显示出来
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#c1 {position: absolute;top: 0;left: 0;z-index: 10}.ggl {position: absolute;top: 0;left: 0;background: gray;width: 600px;height: 400px;line-height: 400px;font-size: 50px;font-weight: 700;text-align: center;}</style>
</head><body><canvas id="c1" width="600" height="400"></canvas><div class="ggl">谢谢惠顾</div>
</body>
</html>
获取canvas元素,并创建图片对象,将卡片渲染出来
<script>/*** @type {HTMLCanvasElement}*/const c1 = document.querySelector('#c1')const ggl = document.querySelector('.ggl')const ctx = c1.getContext('2d')const img = new Image()img.src = './ggl.jpg'img.onload = function () {ctx.drawImage(img, 0, 0, 600, 400)}</script>
执行计划
我们再点击鼠标并且移动时才可以刮刮,通过鼠标对象,创建一个圆,向外辐射,从而模拟刮卡的过程
通过canvas图像合成 globalCompositeOperation 为其设置destination-out, 将背后的中奖结果展示出来
let isDraw = falsec1.onmousedown = function () {isDraw = true}c1.onmouseup = function () {isDraw = false}c1.onmousemove = function (e) {let x = e.pageXlet y = e.pageYif (isDraw) {ctx.globalCompositeOperation = 'destination-out'ctx.arc(x, y, 30, 0, Math.PI * 2)ctx.fill()}}
通过这样,我们的刮刮乐就制作完毕了。
QQ录屏20230712180427
如果再添点乐趣,可以这样
let random = Math.random()if (random < 0.2) {ggl.innerHTML = '恭喜您中了iphone13 Pro'}
更多推荐
如何用canvas实现刮刮乐自助
发布评论