《HTML5 Canvas游戏开发实战》——1.2 Canvas简介

简介:

本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第1章,第1.2节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 Canvas简介

Canvas 元素是HTML5的新元素之一,用于在网页上绘制图形,相当于在HTML中嵌入了一张画布,这样就可以直接在HTML上进行图形操作了,所以它具有极大的应用价值。Canvas 元素本身是没有绘图能力的,它需要借助JavaScript来实现绘图功能。
1.2.1 Canvas标签的历史
Canvas这个 HTML 元素是为客户端矢量图形而设计的。它自己没有行为,只是把一个绘图 API 展现给了客户端 JavaScript,以使脚本能够把想绘制的东西都绘制到一块画布上。
< canvas >标记由 Apple 在 Safari 1.3 Web 浏览器中引入。对 HTML进行这一扩展的原因在于,希望HTML 在 Safari 中的绘图能力也能为 Mac OS X 桌面的 Dashboard 组件所使用,并且 Apple 希望有一种方式在 Dashboard 中支持脚本化的图形。
Firefox 1.5 和 Opera 9 都跟随了 Safari 的引领,这两个浏览器都支持< canvas>标记。
可以在 IE 中使用< canvas>标记,并在 IE 的 VML 支持基础上用开源的 JavaScript 代码(由 Google 发起)来构建具有兼容性的画布。
< canvas>的标准化工作正在由一个 Web 浏览器厂商的非正式协会进行推动。目前< canvas>已经成为 HTML5 草案中一个正式的标签。
1.2.2 Canvas的定义和用法
使用Canvas标签,只需要向HTML5里添加Canvas元素即可,代码如下:

<canvas id="myCanvas" width="200" height="100"></canvas>

1.2.3 如何使用Canvas来绘图
前面已经提到,Canvas 元素本身是没有绘图能力的,所有的绘制工作必须在 JavaScript 内部完成。下面来看看如何使用Canvas来绘图。
代码清单1-7所示代码可以实现绘制一个矩形。
代码清单 1-7

onload = function() {
    draw();
};
function draw() {
    /* 使用 id 来寻找 Canvas 元素 */
    var canvas = document.getElementById('canvassample');
    /* 验证Canvas元素是否存在,以及浏览器是否支持Canvas元素*/
    if ( ! canvas || ! canvas.getContext ) return false;  /* 创建 context 对象 */
    var ctx = canvas.getContext('2d');
    /*画一个红色矩形*/
    cxt.fillStyle="#FF0000";
    cxt.fillRect(0,0,150,75);
}

下面来分析一下以上代码。要使用Canvas元素,首先要根据id或name,将Canvas对象取出来,上面的代码使用的是getElementById方法,如果给Canvas标签加入了name属性,那么也可以使用getElementByTagName来获取Canvas对象。
另外,要使用Canvas元素,必须先判断这个元素是否存在及用户所使用的浏览器是否支持此元素。如果无法使用Canvas元素,那么下面做的所有事情都是无意义的。
上面的代码在使用getContext方法时,传递了一个“2d”参数,这就可以得到二维的context对象以实现二维图形的描画。试想一下,如果将来Canvas可以描画三维图形,或许也可以使用“3d”参数。但是目前还只能使用“2d”作为参数。
在上面的例子中,采用fillStyle方法将画笔颜色设置为红色。另外,用fillRect方法规定了图形的形状、位置和尺寸。更多Canvas的使用方法,将会在第2章之后进行详细介绍。
1.2.4 Canvas的限制
使用Canvas可拥有多种绘制路径、矩形、圆形、字符及添加图像的方法。但是绘制的图形是静止的,如果要让所画的图形动起来,则需要画出每一帧的图形,然后再连接起来。这些都会在后面的章节做详细的介绍。
虽然Canvas可以对图形进行一系列操作,但是效率和普及性都存在一定的问题,对于一些相对复杂的图形和动画等,目前来看,还是Flash更胜一筹。
另外,Canvas是HTML5的新属性,在使用时需要考虑用户的浏览器和使用环境。
Canvas目前只是一张二维画布,如果要想实现三维效果,需要借助第三方类库,如three.js或者Papervision3D等。

相关文章
|
2月前
|
移动开发 HTML5
html5掷骰子跳棋游戏源码
html5掷骰子跳棋游戏源码
45 1
html5掷骰子跳棋游戏源码
|
3月前
|
前端开发 JavaScript API
2024 新年HTML5+Canvas制作3D烟花特效(附源码)
2024 新年HTML5+Canvas制作3D烟花特效(附源码)
58 0
|
4月前
|
XML 移动开发 前端开发
HTML5简介(什么是网页、什么是 HTML、Web标准)
网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。
39 0
|
3月前
|
存储 移动开发 前端开发
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
HTML新特性【HTML5内联SVG、SVG_矩形、SVG 与 Canvas两者间的区别 、HTML5_MathML 】(三)-全面详解(学习总结---从入门到深化)
51 0
|
1天前
|
移动开发 前端开发 搜索推荐
【CSDN创作优化1】个人简介优化 html font属性
【CSDN创作优化1】个人简介优化 html font属性
5 0
|
2天前
|
移动开发 前端开发 HTML5
HTML5 Canvas发光Loading源码
一款基于HTML5 Canvas的发光Loading加载HTML源码。Loading旋转图标是在canvas画布上绘制的,整个loading动画是发光3D的视觉效果
12 1
HTML5 Canvas发光Loading源码
|
3天前
|
移动开发 前端开发 HTML5
Canvas实现超酷Loading动画HTML代码
之前我们分享过很多基于CSS3的Loading动画效果,相信大家都很喜欢。今天我们要来分享一款基于HTML5 Canvas的发光Loading加载动画特效。Loading旋转图标是在canvas画布上绘制的,整个loading动画是发光3D的视觉效果,HTML5非常强大。
10 1
Canvas实现超酷Loading动画HTML代码
|
1月前
|
移动开发 前端开发 Java
html简介
html简介
|
2月前
|
移动开发 JavaScript 前端开发
HTML ,XHTML,HTML5简介,js,JSP与Servlet的关系理解
HTML ,XHTML,HTML5简介,js,JSP与Servlet的关系理解
50 5
|
2月前
|
移动开发 前端开发 API
简述HTML5 Canvas的基本绘图API及其在游戏开发中的作用。
HTML5 Canvas 提供丰富的绘图API,用于在网页上绘制图形、动画和视觉效果,支持基本形状、文本、渐变、图像及像素操作。在游戏开发中,Canvas API用于绘制游戏元素、实现动画效果、进行物理碰撞检测,并具备跨平台兼容性,为创新游戏体验提供强有力的支持。
12 1