博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Canvas画一个刮刮乐
阅读量:5279 次
发布时间:2019-06-14

本文共 2150 字,大约阅读时间需要 7 分钟。

Canvas 通过 JavaScript 来绘制 2D图形。Canvas 是逐像素进行渲染的。开发者可以通过javascript脚本实现任意绘图。Canvas元素是HTML5的一部分,允许脚本语言动态渲染位图像。canvas是HTML5中的新元素,使用javascript用它来绘制图形、图标、以及其它任何视觉性图像。

在国外问答网站Quora上,许多开发者对于HTML5 元素的实用性进行了一系列探讨。Canvas非常灵活,能够很好地融合JavaScript代码并在浏览器内绘制华丽的图形。

学习网址和资料:

菜鸟教程:

图片.png

用Canvas画一个刮刮乐步骤:

一:创建一个画布(Canvas)

注意: 标签通常需要指定一个id属性 (脚本中经常引用), width 和 height 属性定义的画布的大小.

简单实例如下:
二:使用 JavaScript 来绘制图像

canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成:

var isdown = false,cover = document.getElementById("cover"),//首先,找到 
元素:covercanvas = cover.getContext("2d");//然后,创建 context 对象:
三:绘制矩形

//设置fillStyle属性可以是CSS颜色,渐变,或图案。fillStyle 默认设置是#000000(黑色)。

//canvas 是一个二维网格。canvas 的左上角坐标为 (0,0),上面的 fillRect 方法拥有参数 (0,0,400,200)。意思是:在画布上绘制 400x200 的矩形,从左上角开始 (0,0)。

covercanvas.fillStyle="transparent";covercanvas.fillRect(0,0,400,200);
四:移动端阻止浏览器默认功能

由于是长按事件,要在移动端阻止浏览器默认功能。

function isDown(e){e.preventDefault();isdown=true; }function isUp(e){isdown=false; }..........
五:鼠标事件

需要改变的内容为_width,_height,touchTop,touchLeft这几个参数,根据自身画布的位置自行计算即可。

function draw(e) {           e.preventDefault();           if(isdown) {               if(e.changedTouches) {                   e = e.changedTouches[e.changedTouches.length - 1];               }               var _height = parseInt((window.innerHeight - 400) / 2),                   _width = parseInt((window.innerWidth - 400) / 2),                   touchTop = e.clientY - _height,                   touchLeft = e.clientX - _width;               with(covercanvas) {                   beginPath();                   arc(touchLeft, touchTop, 10, 0, Math.PI * 2);                   fill();               }           }           //alert(touchTop);       }
实际例子(完整代码)
          
用Canvas画一个刮刮乐

刮刮乐

蚂蚁会员vip

Canvas由一个可绘制地区HTML代码中的属性定义决定高度和宽度。JavaScript代码可以访问该地区,通过一套完整的绘图功能类似于其他通用二维的API,从而生成动态的图形。

原文作者:祈澈姑娘
原文链接:https://www.jianshu.com/u/05f416aefbe1
创作不易,转载请告知
90后前端妹子,爱编程,爱运营,爱折腾。
坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,欢迎大家一起探讨交流。
有个很难涨粉的的公众号叫:【编程微刊】

转载于:https://www.cnblogs.com/ting6/p/9725741.html

你可能感兴趣的文章
软件随笔
查看>>
C/C++知识补充 (1)
查看>>
Fast Poisson Disk Sampling
查看>>
Python Cookbook(第3版)中文版:15.14 传递Unicode字符串给C函数库
查看>>
python之socket模块
查看>>
Linux下SVN自动更新web [转]
查看>>
线程系列02,多个线程同时处理一个耗时较长的任务以节省时间
查看>>
编程:对经验世界的析构与建构
查看>>
Openstack api 学习文档 & restclient使用文档
查看>>
vim linux下查找显示^M并且删除
查看>>
poj100纪念
查看>>
ExtJs4 笔记(5) Ext.Button 按钮
查看>>
把execl导入到数据库中
查看>>
阿里云人脸比对API封装
查看>>
如何将数据库中的表导入到PowerDesigner中(转)
查看>>
Triangle
查看>>
java 13-3 int类型的包装包Integer
查看>>
spring使用ApplicationContext读取资源文件
查看>>
ros系列笔记
查看>>
Xmind几个有用的技巧
查看>>