<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
.container {
width: 400px;
height: 200px;
border: 1px dotted red;
margin: 100px auto;
}
</style>
</head>
<body>
<div class="container">
<canvas id="c"></canvas>
</div>
<script>
var cv = document.getElementById("c");
var ctx = cv.getContext("2d"); cv.width = 400;
cv.height = 200; // 奖品设置
var prizesArr = [
{name: "iPhone7 亮黑版", color: "rgba(0, 0, 0, 1)"},
{name: "iPhone7 黑色版", color: "rgba(0, 0, 0, .6)"},
{name: "iPhone7 安卓版", color: "rgba(0, 255, 0, 1)"},
{name: "iPhone7 塞班版", color: "rgba(255, 0, 0, 1)"}
]; // 随机获取到一个奖品
var prizeObj = prizesArr[ Math.floor(Math.random() * 4) ]; // 思路:
// 1 先将文字绘制到画布中
// 2 将画布转化为 Base64 格式的图片
// 3 将图片设置为canvas的背景图片
// 4 给canvas画布填充灰色的矩形
// 5 绑定鼠标事件 // 1 设置文字的坐标
var x0 = cv.width / 2, y0 = cv.height / 2;
ctx.textAlign = "center";
ctx.textBaseLine = "middle";
ctx.font = "30px 微软雅黑";
ctx.fillStyle = prizeObj.color;
ctx.fillText(prizeObj.name, x0, y0); // 2 将画布转化为图片
var img = cv.toDataURL("image/jpg", 1);
// 3 将图片设置为canvas的背景图片
cv.style.backgroundImage = "url(" + img + ")"; // 4 给canvas画布填充灰色的矩形
ctx.fillStyle = "silver";
ctx.fillRect(0, 0, cv.width, cv.height); //
// 判断是否点击了 canvas
var isStart = false;
var radius = 10;
cv.onmousedown = function() {
isStart = true;
};
cv.onmouseup = function() {
isStart = false;
// 默认值
ctx.globalCompositeOperation = 'source-over';
}; cv.onmousemove = function(e) {
// 原有内容中与新图形不重叠的部分会被保留, 重叠的部分,没有了
ctx.globalCompositeOperation = "destination-out"; if(isStart) { // 如果开关是 true ,才执行擦出效果
ctx.beginPath();
// ctx.arc()
var x = e.clientX - cv.offsetLeft;
var y = e.clientY - cv.offsetTop; // ctx.fillStyle = "rgba(0, 0, 0, 1)";
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fill();
}
};
</script>
</body>
</html>

canvas制作刮刮乐案例的更多相关文章

  1. 20行js代码制作网页刮刮乐

    分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 盖伦.jpg 刮刮乐.gif HTML部分 <body> ![](img/gailun.jpg) &l ...

  2. 游戏的套路你知道吗? H5 Canvas刮刮乐

    玩游戏的人 很多时候都会遇到翻牌子  开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结  指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了  其实很多时候在你点开那个 ...

  3. H5 Canvas刮刮乐

    玩游戏的人 很多时候都会遇到翻牌子  开宝箱. 总有人傻傻的在哪里还纠结很久到底点哪一个! 纠结  指不定翻哪一个会多一点,你明明看到那个卡片的奖项多 . 那我就告诉你好了  其实很多时候在你点开那个 ...

  4. canvas刮刮乐

    这周有点迷茫,不知道干嘛了,一天天就过去了!我在博客右侧公告栏加了qq交流,各位有好的主题,或者有趣的技术,欢迎交流!今天突发奇想,就写了2个h5 canvas的demo玩玩! demo一:刮刮乐 舍 ...

  5. 【Android界面实现】使用Canvas对象实现“刮刮乐”效果

    在淘宝.京东等电商举办活动的时候,常常能够看到在移动client推出的各种刮奖活动,而这样的活动也受到了非常多人的喜爱.从client的体验来说,这样的效果应该是通过网页来实现的,那么,我们使用And ...

  6. HTML5 CSS3 诱人的实例 :canvas 模拟实现电子彩票刮刮乐

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34089553 今天给大家带来一个刮刮乐的小例子~基于HTML5 canvas的, ...

  7. canvas刮刮乐游戏等

    裁剪 ctx.clip():当前路径外的区域不再绘制 <canvas id="cans" width=500 height=500></canvas> &l ...

  8. canvas 写一个刮刮乐抽奖

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 赵雅智_Android案例_刮刮乐

    实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  10. canvas之刮刮乐

    效果图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

随机推荐

  1. 01-初学总结之《谭浩强C程序设计》

    注:个人针对于课本的易错点进行了相关的整理.整理的不专业,多多见谅. C语言中的易出错的点 这个笔记综合了 0. 常量&变量 常量 整型常量 -345,1000,0 实型常量 1)   十进制 ...

  2. PAT-树的同构

    链接 树的同构 题意 同构的定义: 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的. 给两棵树,判断是否同构 做法 先建树,然后判断,知道怎么判断就知道 ...

  3. BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路 Dijkstra

    Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...

  4. vue router 配置默认页/404页面

    *号通配404默认页面

  5. python 操作jenkins 常用api

    Python-Jenkins 继续寻找,然后我在Jenkins官网上找到了Python-Jenkins API,仔细阅读后发现,它几乎涵盖了大部分Jenkins的操作,大大方便了我们在后台进行对Jen ...

  6. Shiro身份认证授权原理

    shiro在应用程序中的使用是用Subject为入口的, 最终subject委托给真正的管理者ShiroSecurityMannager Realm是Shiro获得身份认证信息和来源信息的地方(所以这 ...

  7. iOS中的crash防护(二)KVC造成的crash

      接上篇< iOS中的crash防护(一)unrecognized selector sent to instance> 我们攻克了找不到方法实现的crash,这一篇我这里主要分析一下在 ...

  8. bash脚本编程知识储备

    bash脚本编程:     脚本程序:解释器解释执行: 首先得理清一些琐碎的知识点,我尽量把我所学的帮朋友一起梳理一下 编程环境:(我会在接下来的篇章,图文例子三结合的方式带大家一起学习)       ...

  9. [Tailwind] Control What Variations are Generated for Each Utility Class Module in Tailwind

    In this lesson, we learn how to control what utility classes are generated for each utility class mo ...

  10. Class example in C/C++

    class Player {  private:   int health; //these are the attributes   int strength;   int agility;  pu ...