第一章 基础知识

第一节 canvas元素

    1939年,米高梅公司(Metro-Goldwyn-Mayer Studios)曾经发行了一部电影,根据美国国会图书馆(American Library of Congress)的说法,它注定会成为历史上观看人数最多的电影。《绿野仙踪》这部电影讲述了一个名叫Dorothy的年轻女孩与宠物狗Toto的故事。他们被一阵猛烈的龙卷风从美国中部的堪萨斯州刮到了名为“奥兹王国”(Oz)的一片梦幻国度之中。

    这部电影一开始,是乏味与沉闷的黑白场景,等到Dorothy与Toto到了奥兹王国,电影一下子就切入了色彩鲜明的画面之中,整个冒险也就随之开始了……

    在过去二十多年的时间里,软件开发者一直都在编写乏味、沉闷的网络应用程序,这些程序不外乎将一张张老套的表格永无止境般地展示给用户,令人烦躁不堪。终于,我们来到了HTML5的国度,它让开发者可以制作出激动人心的应用程序来。这些程序运行在浏览器之中,但是看上去与传统的桌面应用程序很相似。

    在这个HTML5的奥兹王国中,我们将使用具有魔力的canvas元素,来在浏览器中做一番奇妙的事情。我们将会实现一个如图1-1所示的图像查看器,一个交互式的放大镜,一个可以在各种得体的浏览器以及iPad之中运行的绘图程序。我们还要做很多动画,包含一个优秀的弹珠台游戏在内的许多游戏,一些图像效果滤镜,以及很多其他的网络应用程序。在以前,上述软件完全处于Flash开发的领域之中。

    咱们开始吧!

 Canvas提供了功能强大的图形处理API

图1-1 Canvas提供了功能强大的图形处理API

    1.1 canvas元素

    canvas元素可以说是HTML5元素中功能最强大的一个。然而,你马上就会看到,它真正的能力是通过Canvas的context 对象而表现出来的。该环境变量可以从canvas元素身上获取。图1-2是一个简单的例子,它使用了canvas元素及与之相关的绘图环境。

 Hello Canvas范例程序

图1-2 Hello Canvas范例程序

    图1-2中的应用程序非常简单,它将一个字符串显示出来,该字符串大致与canvas自身的中心点对齐。该应用程序的HTML代码如程序清单1-1所示。

    程序清单1-1中使用了canvas元素,为其指定了一个标识符,并设置了该元素的宽度与高度。请注意canvas元素内容部分(body)所含的文本,这种文本叫做“后备内容”(fallback content),浏览器仅在不支持canvas元素的时候,才会显示该内容。

    程序清单1-1 example.html

    <!DOCTYPE html>

    <html>

       <head>

         <title>A Simple Canvas Example</title>

          <style>

         body {

            background: #dddddd;

         }

         #canvas {

            margin: 10px;

            padding: 10px;

            background: #ffffff;

            border: thin inset #aaaaaa;

         }

      </style>

   </head>

  <body>

    <canvas id='canvas' width='600' height='300'>

      Canvas not supported

    </canvas>

    <script src='example.js'></script>

  </body>

</html>

    除了这个元素之外,程序清单1-1中的HTML代码,还使用了CSS来设置应用程序的背景色以及canvas元素自身的某些属性。在默认状况下,canvas元素的背景色与其父元素的背景色一致。所以,我们用CSS来将canvas元素的背景色设置成不透明的白色,这样就可以将它同淡灰色背景的应用程序区分开来。