<!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. C# 学习笔记_类

    定义:将成员及方法封装到类中,类的实例则称为对象. 结构:属性,类修饰符,class,类名,{类体} 类修饰符:new,public,protected,internal,private,abstra ...

  2. chrome模拟微信

    这里有一个模拟器,既可以设置模拟很多型号的手机设备,也可以伪造你想要的HTTP_USER_AGENT.选择USER_AGENT,选other,微信的HTTP_USER_AGENT是: 在iPhone下 ...

  3. gulp给文件后添加md5时间戳

    这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法 1 // 引入 gulp及组件 var gulp = require('gulp'), autoprefixer = ...

  4. 04 Django-ORM多表操作(进阶)

      一.创建模型 下面我们通过图书管理系统,来设计出每张表之间的对应关系. 通过上图关系,来定义一下我们的模型类. from django.db import models class Book(mo ...

  5. Django使用中常见的错误

    Django Mysql SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED   Django 执行makemigrations  的时候报错 ...

  6. Redis详解入门篇(转载)

    Redis详解入门篇(转载) [本教程目录] 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 ...

  7. Java Mybatis 缓存介绍

    0 引言 本文主要介绍有关MyBatis的缓存. 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1. 一级缓存: 基于PerpetualCache 的 HashMap本 ...

  8. sh脚本文件

    echo `date +%F`  打印当前日期  用于写备份脚本按照名字命名

  9. BZOJ 2527 [POI2011]MET-Meteors (整体二分+树状数组)

    题目大意:略 洛谷传送门 整体二分裸题 考虑只有一个国家的情况如何处理 对询问数量二分答案,暴力$O(m)$打差分,求前缀和验证,时间是$O(mlogK)$ 如果有$n$个国家,就是$O(nmlogK ...

  10. redis实现集群加主从复制

    a)原理 (1)前提背景:如何解决redis横向扩展的问题----redis集群实现方式 (2)介绍redis 集群 ① Redis 集群是一个提供在多个Redis间节点间共享数据的程序集 ② 优势: ...