js+canvas实现刮刮奖功能


Posted in Javascript onSeptember 13, 2020

本文实例为大家分享了js+canvas实现刮刮奖的具体代码,供大家参考,具体内容如下

1.实现了PC端的刮刮奖效果

2.使用了canvas的文本,像素操作,合成,绘制图形,随机数

<!DOCTYPE html>
<html>

 <head>
 <meta charset="UTF-8">
 <title>刮刮奖</title>
 <style type="text/css">
 * {
 margin: 0;
 padding: 0;
 }
 
 .box {
 width: 500px;
 height: 500px;
 margin: 0 auto;
 position: relative;
 background: #00BFFF;
 }
 
 #prize {
 width: 300px;
 height: 100px;
 position: absolute;
 top: 50%;
 left: 50%;
 margin: -50px 0 0 -150px;
 background: #fff;
 font-family: "微软雅黑";
 font-size: 40px;
 text-align: center;
 line-height: 100px;
 -webkit-user-select: none;
 }
 
 #myCanvas {
 position: absolute;
 top: 50%;
 left: 50%;
 margin: -50px 0 0 -150px;
 }
 </style>
 </head>

 <body>
 <div class="box">
 <div id="prize"></div>
 <canvas id="myCanvas" width="300" height="100"></canvas>
 </div>
 </body>
 <script type="text/javascript">
 //获取对象
 var textArr = ["一等奖", "二等奖", "三等奖", "谢谢惠顾", "再来一次"];
 var prize = document.getElementById("prize");
 var num = Math.random() * 100;
 if (num <= 60) {
 prize.innerText = textArr[3];
 } else if (num <= 70) {
 prize.innerText = textArr[4];
 } else if (num <= 80) {
 prize.innerText = textArr[2];
 } else if (num <= 90) {
 prize.innerText = textArr[1];
 } else if (num <= 100) {
 prize.innerText = textArr[0];
 }
 var myCanvas = document.getElementById("myCanvas");
 // 搭建环境
 var cxt = myCanvas.getContext("2d");
 cxt.globalAlpha = 1;
 cxt.fillStyle = "#ccc";
 cxt.fillRect(0, 0, 300, 100);
 var txt = "刮刮奖";
 cxt.fillStyle = "#000";
 cxt.font = "30px 微软雅黑";
 cxt.textAlign = "center";
 cxt.textBaseline = "middle";
 cxt.fillText(txt, 150, 50, 300);
 var mX, mY;
 var flag = false;
 myCanvas.onmousedown = function(e) {
 flag = true;
 mX = e.offsetX;
 mY = e.offsetY;
 drawArc(mX, mY);
 }
 document.body.onmousemove = function(e) {
 if (flag == true) {
 mX = e.offsetX;
 mY = e.offsetY;
 drawArc(mX, mY);
 }
 }
 document.body.onmouseup = function() {
 flag = false;
 sayPrize();
 }

 function drawArc(x, y) {
 cxt.globalCompositeOperation = "destination-out"; //相交部分不显示
 cxt.beginPath();
 cxt.fillStyle = "white";
 cxt.moveTo(x, y);
 cxt.arc(x, y, 10, 0, 2 * Math.PI);
 cxt.fill();
 }

 function sayPrize() {
 var myImg = cxt.getImageData(70, 30, 160, 40);
 // var myImg = cxt.getImageData(93, 37, 40, 30);
 // 设置像素点的颜色
 var num = 0;
 var max = myImg.data.length / 4;
 for (var i = 0; i < myImg.data.length; i += 4) {
 if (myImg.data[i + 3] <= 200) {
 num++;
 }
 }
 //2/3*myImg.data.length/4
 if (num >= max * 0.6) {
 alert("恭喜您,获得:" + prize.innerText);
 }
 }
 </script>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 日期时间 转换的方法
Feb 21 Javascript
javascript判断非数字的简单例子
Jul 18 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
Javascript基础_嵌入图像的简单实现
Jun 14 Javascript
JavaScript兼容浏览器FF/IE技巧
Aug 14 Javascript
Node.js开启Https的实践详解
Oct 25 Javascript
Bootstrap Img 图片样式(推荐)
Dec 13 Javascript
vue 表单验证按钮事件交由父组件触发的方法
Dec 17 Javascript
vue中引入第三方字体文件的方法示例
Dec 17 Javascript
在Web关闭页面时发送Ajax请求的实现方法
Mar 07 Javascript
js+css3实现简单时钟特效
Sep 13 #Javascript
jquery实现简易验证插件封装
Sep 13 #jQuery
利用H5api实现时钟的绘制(javascript)
Sep 13 #Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 #Javascript
返回上一个url并刷新界面的js代码
Sep 12 #Javascript
Vue和React有哪些区别
Sep 12 #Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 #Javascript
You might like
PHP删除数组中空值的方法介绍
2014/04/14 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
移动端js图片查看器
2016/11/17 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python使用scrapy解析js示例
2014/01/23 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
详解【python】str与json类型转换
2019/04/29 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
django中cookiecutter的使用教程
2020/12/03 Python
阿里云:Aliyun.com
2017/02/15 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
幼儿园中秋节活动方案2013
2014/01/29 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
医院营销工作计划
2015/01/16 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
Python进度条的使用
2021/05/17 Python