《HTML5 2D游戏编程核心技术》——第1章,第1.4节特别功能

1.4 Snail Bait游戏中的HTML和CSS

Snail Bait游戏使用了HTML、CSS和JavaScript,其中大部分是JavaScript,事实上,本书接下来的章节主要关注JavaScript,只是偶尔谈及HTML和CSS。
图1.12显示了游戏上半部白色轮廓中的HTML元素,以及它们对应的CSS代码。

图1.12 Snail Bait上半部对应的CSS

Snail Bait游戏中的所有事件都发生在arena内,arena是一个HTML DIV元素。arena的margin属性值是0,auto,这用于指明arena被放在浏览器中心,其内的所有物体都是水平居中的,如图1.13所示。
当Snail Bait游戏加载资源时,它会显示如图1.14所示的动画。在该动画播放期间内,游戏中所有的元素都是不可见的,这也是图1.12中的元素显示属性都被置为none(除了snailbait-arena之外,因为它本身没有可见属性)的原因。

图1.13 Snail Bait位于窗口的中心且被水平放置

图1.14 Snail Bait游戏的加载动画

在游戏资源加载完成后,通过设置游戏元素display属性为block,随后设置opacity属性为1.0(完全不透明),可以让游戏元素显示出来。具有和opacity属性相关的转换的元素,例如snailbait-lives、snailbait-score以及snailbait-game-canvas,会在一段指定的时间转换出来。
snailbait-lives元素有一个绝对(absolute)位置;另外,在它默认的静态位置处,它会自动扩展以便于适应所属DIV元素的宽度,使玩家得分能够显示在其内部。
游戏的canvas元素,即HTML5 canvas元素,是所有游戏行为发生的地方;它是图1.12中唯一不属于DIV的元素。
图1.15显示了游戏下半部的HTML元素。

图1.15 Snail Bait游戏底部对应的CSS

同游戏上半部的lives和score元素一样,在游戏加载动画时,浏览器不显示底部的元素,因此这些元素初始时是不可见的,有一个5秒钟的不透明度转换,Snail Bait游戏会让这些元素在游戏开始时同score和lives元素一样,渐渐地显示出来。
snailbait-sound-and-music元素和snailbait-lives元素一样,有一个绝对位置,在扩展时不会超出边界。snailbait-keys和snailbait-explanation DIV有一个inline(内联)显示属性,这样可以和DIV里的其他元素保持在一条水平的直线上,而不是被垂直地堆叠起来。
程序清单1.2适当地列出了Snail Bait游戏的部分HTML代码,省略了相当数量的HTML实现,如运行缓慢警告和开发者后门等。
程序清单1.2 index.html文件代码(摘录)

canvas元素是所有动作发生的地方。canvas元素和一个用来实现2D游戏、具有强大的API的2D开发环境一起出现,你将会在3.1节中了解到相关内容。canvas元素里面的文本是回退文本,只有在浏览器不支持HTML5 canvas元素时,才会显示出来。
关于游戏的HTML和CSS最后需要注意的是:canvas元素的宽度和高度是通过之前的canvas元素属性列表来设置的。这些属性适合canvas元素的大小,也适合元素内部绘制表面(drawing surface)的大小。
另一方面,使用CSS来设置canvas元素的宽度和高度仅仅是改变canvas元素的大小。绘制表面仍然是默认的宽度和高度(300像素×150像素)。这意味着设置canvas元素的大小不是默认的300×150时,你得到的canvas元素的大小和绘制表面的大小是不匹配的,浏览器会调整绘制表面的大小来适应canvas元素的范围。大多数情况下,这种调整是我们不希望看到的。一个好的解决方案是,通过canvas元素自己的宽度和高度属性来设置canvas元素的大小,而不是通过CSS。
现在,你已经了解Snail Bait游戏最终将形成的结构和呈现的画面,现在让我们从头开始,一步步编程实现Snail Bait游戏。
在一个较小的canvas元素内绘制,使用CSS来调节它?
有些游戏会故意在一个较小的canvas元素内绘制,并使用CSS调节canvas元素,从而得到一个可以操作的大小。在此种方式下,canvas元素不需要操作很多像素点,因此性能会得到提高。当然,性能也会因为调节canvas元素的大小而有所损失,但是CSS调节是典型的硬件加速过程,因此调节成本可以达到最小。目前几乎所有最新版本的浏览器都配备了硬件加速canvas元素技术,使用这样的浏览器绘制一个全尺寸的canvas元素,其速度也是非常快的。
HTML元素和CSS类的命名空间
为了避免和其他HTML元素的命名冲突,Snail Bait中每个HTML元素和CSS类名都以“snailbait-”开始。

时间: 2024-10-30 02:54:22

《HTML5 2D游戏编程核心技术》——第1章,第1.4节特别功能的相关文章

《HTML5 2D游戏编程核心技术》——第1章,第1.1节Snail Bait游戏

本节书摘来自华章出版社<HTML5 2D游戏编程核心技术>一书中的第1章,第1.1节,作者[美] 戴维·吉尔里,更多章节内容可以访问"华章计算机"公众号查看. 第1章 概 述 令人激动的是,开发人员可以使用软件开发技术使屏幕上出现任何想象的场景.与其他领域受一些物理条件的束缚不同,开发人员长期以来一直使用图形化API和UI工具包来实现富有创造性且引人注目的应用程序.可以说,最有创意的软件开发就是游戏编程.比起让游戏愿景变成现实,优秀的创意还可使我们通过少许努力便获得更多的回

《HTML5 2D游戏编程核心技术》——第1章,第1.2节HTML5游戏开发最佳实践

本节书摘来自华章出版社<HTML5 2D游戏编程核心技术>一书中的第1章,第1.2节HTML5游戏开发最佳实践,作者[美] 戴维·吉尔里,更多章节内容可以访问"华章计算机"公众号查看. 1.2 HTML5游戏开发最佳实践 我们将在本书中持续地讨论一些关于游戏开发的最佳实践,首先介绍7个与HTML5有关的实践. 1)窗口失去焦点时暂停游戏. 2)窗口重新获得焦点时实现倒计时. 3)使用CSS实现UI特效. 4)对于运行缓慢的游戏做出检测和处理. 5)添加社交功能. 6)把所有

《HTML5 2D游戏编程核心技术》——第1章,第1.7节小结

1.7 小结Snail Bait游戏是一款HTML5平台游戏,是通过canvas元素的2D API实现的.正如你将在本书接下来的章节中看到的那样,这个API提供了一个强大且直观的功能函数集,通过这个函数集,你几乎可以实现任何一款能想象到的2D游戏.在这一章里,我们从一个最顶层了解了Snail Bait游戏的结构,这是为了获得一些比较直观的概念,并了解实现它的一些最佳实践.尽管通过阅读本章,你可以对游戏有一个直观的印象,但是如果试玩一下,将会对游戏有更好的理解,你可以在corehtml5games

《HTML5 2D游戏编程核心技术》——第1章,第1.5节开始Snail Bait游戏编程

1.5 开始Snail Bait游戏编程图1.16显示了Snail Bait游戏的初始文件集合.在本书中,我们将逐步增加更多的文件.但是现在,我们需要一个HTML文件来定义游戏中HTML元素的结构:一个CSS文件来定义这些元素的可见属性:一个JavaScript文件来定义游戏的逻辑:以及两张图像,一个作为背景,一个作为跑步小人. 图1.16 Snail Bait游戏的初始文件集合 图1.17显示了游戏的开始时间点,只绘制出了背景和跑步小人.开始时,跑步小人并不是一个sprite对象,而是直接绘制

《HTML5 2D游戏编程核心技术》——第1章,第1.3节特别功能

1.3 特别功能 Snail Bait游戏有3个特别的功能,既能为游戏带来加分,又能让游戏测试更加便捷,它们分别是:开发者后门时间系统粒子系统当你按下Ctrl+D组合键时,Snail Bait游戏就会显示开发者后门,如图1.11所示.当开发者后门处于可见状态时,你可以通过控制游戏时间流逝的速率来缓慢地运行游戏,以便观察游戏中诸如碰撞检测这样的事件是如何发生的.反过来,你也可以加速运行游戏,从而获得游戏的最佳运行速率.你可以打开碰撞矩形以便更好地观察碰撞是如何发生的:如果烟雾孔阻碍了你的视野,你可

《HTML5 2D游戏编程核心技术》——导读

目 录第1章 概述 1.1 Snail Bait游戏1.2 HTML5游戏开发最佳实践 1.2.1 窗口失去焦点时暂停游戏1.2.2 窗口重获焦点时实现倒计时功能1.2.3 使用CSS实现UI特效1.2.4 对游戏运行缓慢的状态做出检测和处理1.2.5 添加社交功能 1.2.6 将所有游戏图像放在单独的sprite表单中1.2.7 在服务器中存储高分榜和实时游戏数据1.3 特别功能 1.4 Snail Bait游戏中的HTML和CSS1.5 开始Snail Bait游戏编程 1.6 本书中使用的

《HTML5 2D游戏编程核心技术》——第3章,第3.1节滚动背景和监控帧频

第3章 图形和动画是视频游戏的基础.能够绘制图形和图像是创造平滑的.不闪烁的动画最重要的技能之一,也是游戏开发人员必须要掌握的能力. 动画会持续地绘制动画帧,一般每秒30-60次.这个速率称为动画帧速率.每一个动画帧如同连环画的一页,每帧几乎和上一帧一样,仅仅存在着微小的差别,这样就可以在游戏快速显示动画帧时,创造出运动的效果.更多有关连环画的内容请阅读3.2节. 图3.1显示了一个单独的动画帧截图.这个游戏版本会保持这一状态到本章结束,图中显示了背景和平台从右向左滚动时的动画帧速率. 平台在动

《HTML5 2D游戏编程核心技术》——第2章,第2.1节使用开发者工具

第2章 在本书中,我们将从头开始编程实现一款游戏.像所有的游戏开发者一样,在开始之前,我们必须收集原始素材,并熟悉我们的工具.对于大多数游戏来说,下面的原始素材是必备的. 图像 音效 音乐 下面的内容则是可选的,使用它们可以给你的HTML5游戏增色. 网站图标 网页背景 GIF动画 网站图标是一些小的图标,可以在浏览器的地址栏或者标签中显示.网页背景可以是图像,也可以像Snail Bait游戏一样,用CSS画出来.Snail Bait游戏在加载资源时,会显示一个GIF动画. 幸运的是,所有必要的

《HTML5 2D游戏编程核心技术》——第2章,第2.6节小结

2.6 小结浏览器开发者工具对于编程实现HTML5游戏来说是必不可少的,在本书写作时,所有的主流浏览器都提供了合适的工具集.本章简要地描述了Chrome浏览器开发者工具,对实现游戏所需的大部分工具进行了简要介绍.其他浏览器厂商实现了类似的工具集,你在本章中学到的有关Chrome浏览器开发者工具的知识,同样也适用于其他浏览器.你很少会遇到一个熟练的视频游戏开发人员,同时也是技艺高超的艺术家或者音乐家.大多数游戏开发人员都会依赖于一些开源的图形.音效以及音乐资源.本章中,你了解了如何获取开源资源,并