HTML5 Canvas游戏开发实战 PDF扫描版

HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读者不仅知其然,而且知其所以然。在本书中,除了介绍了HTML5 Canvas的基础API之外,还重点阐述了如何在JavaScript中运用面向对象的编程思想来进行游戏开发。
本书在介绍每个游戏开发的过程时,都会包括游戏分析、开发过程、代码解析和小结等相关内容,以帮助读者了解每种类型游戏开发的详细步骤,让读者彻底掌握各种类型游戏的开发思想。最后,还通过数据对比分析,指导读者提升程序的性能,写出高效的代码,从而开发出运行流畅的游戏。
HTML5 Canvas游戏开发实战 目录:
前  言 
第一部分 准备工作篇 
第1章 准备工作 / 2 
1.1 HTML5介绍 / 2 
1.1.1 什么是HTML5 / 2 
1.1.2 HTML5的新特性 / 2 
1.2 Canvas简介 / 5 
1.2.1 Canvas标签的历史 / 5 
1.2.2 Canvas的定义和用法 / 6 
1.2.3 如何使用Canvas来绘图 / 6 
1.2.4 Canvas的限制 / 7 
1.3 开发与运行环境的准备 / 7 
1.3.1 浏览器的支持 / 7 
1.3.2 准备一个本地的服务器 / 8 
1.4 开发工具的选择 / 8 
1.5 测试与上传代码 / 12 
1.6 JavaScript中的面向对象 / 13 
1.6.1 类 / 13 
1.6.2 静态类 / 16 
1.6.3 继承 / 16 
1.7 小结 / 17 
第二部分 基础知识篇 
第2章 Canvas基本功能 / 20 
2.1 绘制基本图形 / 20 
2.1.1 画线 / 20 
2.1.2 画矩形 / 22 
2.1.3 画圆 / 24 
2.1.4 画圆角矩形 / 26 
2.1.5 擦除Canvas画板 / 27 
2.2 绘制复杂图形 / 28 
2.2.1 画曲线 / 28 
2.2.2 利用clip在指定区域绘图 / 30 
2.2.3 绘制自定义图形 / 31 
2.3 绘制文本 / 32 
2.3.1 绘制文字 / 32 
2.3.2 文字设置 / 33 
2.3.3 文字的对齐方式 / 38 
2.4 图片操作 / 41 
2.4.1 利用drawImage绘制图片 / 41 
2.4.2 利用getImageData和putImageData绘制图片 / 45 
2.4.3 利用createImageData新建像素 / 47 
2.5 小结 / 49 
第3章 Canvas高级功能 / 50 
3.1 变形 / 50 
3.1.1 放大与缩小 / 50 
3.1.2 平移 / 53 
3.1.3 旋转 / 54 
3.1.4 利用transform矩阵实现多样化的变形 / 56 
3.2 图形的渲染 / 65 
3.2.1 绘制颜色渐变效果的图形 / 65 
3.2.2 颜色合成之globalCompositeOperation属性 / 67 
3.2.3 颜色反转 / 69 
3.2.4 灰度控制 / 70 
3.2.5 阴影效果 / 71 
3.3 自定义画板 / 72 
3.3.1 画板的建立 / 72 
3.3.2 Canvas画布的导出功能 / 79 
3.4 小结 / 81 
第4章 lufylegend开源库件 / 82 
4.1 lufylegend库件简介 / 82 
4.1.1 工作原理 / 82 
4.1.2 库件使用流程 / 83 
4.2 图片的加载与显示 / 84 
4.2.1 图片显示举例 / 84 
4.2.2 LBitmapData对象 / 86 
4.2.3 LBitmap对象 / 87 
4.3 层的概念 / 88 
4.4 使用LGraphics对象绘图 / 90 
4.4.1 绘制矩形 / 90 
4.4.2 绘制圆 / 91 
4.4.3 绘制任意多边形 / 92 
4.4.4 使用Canvas的原始绘图函数进行绘图 / 93 
4.4.5 使用LSprite对象进行绘图 / 94 
4.4.6 使用LGraphics对象绘制图片 / 95 
4.5 文本 / 101 
4.5.1 文本属性 / 101 
4.5.2 输入框 / 102 
4.6 事件 / 103 
4.6.1 鼠标事件 / 103 
4.6.2 循环事件 / 104 
4.6.3 键盘事件 / 105 
4.7 按钮 / 106 
4.8 动画 / 108 
4.9 小结 / 113 
第三部分 开发实战篇 
第5章 从简单做起—“石头剪子布”游戏 / 116 
5.1 游戏分析 / 116 
5.2 必要的JavaScript知识 / 117 
5.2.1 随机数 / 117 
5.2.2 条件分支 / 117 
5.3 分层实现 / 117 
5.4 各个层的基本功能 / 119 
5.4.1 基本画面显示 / 119 
5.4.2 结果层的显示 / 126 
5.4.3 控制层的显示 / 127 
5.5 出拳 / 129 
5.6 结果判定 / 131 
5.7 小结 / 137 
第6章 开发“俄罗斯方块”游戏 / 138 
6.1 游戏分析 / 138 
6.2 必要的JavaScript知识 / 138 
6.3 游戏标题画面显示 / 139 
6.4 向游戏里添加方块 / 141 
6.5 控制方块的移动 / 152 
6.5.1 键盘事件 / 152 
6.5.2 触屏事件 / 155 
6.6 方块的消除和得分的显示 / 157 
6.7 小结 / 160 
第7章 开发“是男人就下一百层”游戏 / 161 
7.1 游戏分析 / 161 
7.2 游戏标题画面显示 / 161 
7.3 读取图片与背景显示 / 162 
7.4 添加一个静止的地板 / 167 
7.5 添加游戏主角 / 170 
7.5.1 让游戏主角出现在画面上 / 170 
7.5.2 通过键盘事件来控制游戏主角的移动 / 177 
7.5.3 通过触屏事件来控制游戏主角的移动 / 178 
7.6 添加多种多样的地板 / 179 
7.6.1 会消失的地板 / 179 
7.6.2 带刺的地板 / 181 
7.6.3 带有弹性的地板 / 182 
7.6.4 向左和向右移动的地板 / 184 
7.7 游戏数据的显示 / 187 
7.8 游戏结束与重开 / 190 
7.9 小结 / 192 
第8章 开发射击类游戏 / 193 
8.1 游戏分析 / 193 
8.2 添加一架可控飞机 / 194 
8.2.1 添加一个飞机类 / 194 
8.2.2 可控飞机类 / 197 
8.3 为飞机添加多样化的子弹 / 203 
8.3.1 建立一个子弹类 / 203 
8.3.2 单发子弹 / 205 
8.3.3 多发子弹 / 207 
8.3.4 环形子弹 / 208 
8.3.5 反向子弹 / 209 
8.4 添加敌机 / 209 
8.4.1 建立一个敌机类 / 210 
8.4.2 建立一个敌机Boss类 / 214 
8.5 碰撞检测 / 217 
8.5.1 飞机与子弹的碰撞 / 217 
8.5.2 我机与敌机的碰撞 / 220 
8.6 子弹的变更 / 221 
8.6.1 建立一个弹药类 / 222 
8.6.2 弹药与我机的碰撞 / 223 
8.7 飞机生命值的显示 / 225 
8.8 游戏胜利与失败判定 / 226 
8.9 小结 / 228 
第9章 开发物理游戏 / 229 
9.1 Box2D简介 / 229 
9.2 Box2dWeb在lufylegend库件中的使用 / 229 
9.3 创建各种各样的物体 / 234 
9.3.1 矩形物体 / 234 
9.3.2 圆形物体 / 237 
9.3.3 多边形物体 / 239 
9.4 响应鼠标拖拽物体 / 242 
9.5 关节(Joint) / 243 
9.5.1 距离关节(b2DistanceJointDef) / 243 
9.5.2 旋转关节(b2RevoluteJointDef) / 245 
9.5.3 滑轮关节(b2PulleyJointDef) / 247 
9.5.4 移动关节(b2PrismaticJoint) / 248 
9.5.5 齿轮关节(b2GearJoint) / 250 
9.5.6 悬挂关节(b2LineJoint) / 252 
9.5.7 焊接关节(b2WeldJoint) / 253 
9.5.8 鼠标关节(Mouse Joint) / 254 
9.6 力 / 254 
9.7 碰撞检测 / 256 
9.8 镜头移动 / 260 
9.9 做一个简单的物理游戏 / 263 
9.10 小结 / 267 
第10章 开发网络游戏 / 268 
10.1 HTTP通信 / 268 
10.1.1 如何实现HTTP通信 / 268 
10.1.2 HTTP通信的弊端 / 275 
10.2 Socket通信 / 275 
10.2.1 区分Socket通信和HTTP通信 / 276 
10.2.2 服务器端 / 276 
10.2.3 客户端 / 281 
10.3 利用WebSocket实现简单的聊天室 / 283 
10.4 做一款多人在线的坦克大战 / 293 
10.4.1 服务器 / 293 
10.4.2 客户端 / 293 
10.5 小结 / 307 
第四部分 技能提高篇 
第11章 提高效率的分析 / 310 
11.1 绘图时使用小数的影响 / 310 
11.2 drawImage和putImageData的效率比较 / 311 
11.3 区域更新和图片大小对绘图效率的影响 / 311 
11.4 图片格式对绘图效率的影响 / 313 
11.5 优化代码以提高整体效率 / 314 
11.5.1 使用位运算 / 314 
11.5.2 少用Math静态类 / 316 
11.5.3 优化算法 / 319 
11.6 小结 / 322 
教程地址: HTML5 Canvas游戏开发实战 PDF扫描版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程之创建线程

在Java中,线程能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后…

阿 Q 的停车场

问题描述 刚拿到驾照的 KJ 总喜欢开着车到处兜风,玩完了再把车停到阿 Q 的停车场里,虽然 她对自己停车的水平很有信心,但她还是不放心其他人的停车水平,尤其是 Kelukin。于是, 她每次都把自己的爱车停在距离其它车最远…

css3图片垂直居中

图片相对父元素垂直居中, css3属性给父级元素设置 display: -webkit-box; -moz-box-align: center; -webkit-box-align: center; -moz-box-pack: center; -webkit-box-pack: center; 需要注意的是: 父级元素要有确定的高度!

声明式的理解【gpt】

一 MyBatis采用了声明式语法来进行SQL映射配置【mybatis声明式】 MyBatis是一款优秀的持久层框架,支持自定义SQL、存储过程以及高级映射,使得开发人员能够专注于SQL本身而不是数据库访问。MyBatis提供了两种配置方式:XML配置和注解配置&…

网络局域网看不到其它计算机,局域网中看不到其它计算机怎么办

通过网上邻居或查看网络计算机时,看不到局域网中其它计算机,这是怎么回事呢?下面是学习啦小编给大家整理的一些有关看不到局域网中其它计算机的解决方法,希望对大家有帮助!局域网中看不到其它计算机的解决方法打开“控制面板”-“网络和Inte…

iconfont 图标转为字体_iconfont字体图标的使用方法--超简单!

我之前因为项目用bootstrap比较多,所以使用font awesome字体图标比较多,后来接触到了iconfont,发现想要的什么图标都有,还可以自定义图标,非常强大!之前看了一波教程,觉得繁琐,自己弄明白后感觉如此简单,做了这么个简单教程,直接上图,简单粗暴,避免新手走弯路,这里讲解的默认是…

一罐来统治所有人

跳下内存通道 早在1998年,当我是一名C / C 开发人员时,尝试使用Java时,有关该语言的一些内容对我来说就显得有些恼火了。 我记得很担心这些 为什么没有合适的编辑器呢? C / C 有很多。 我为Java拥有的只是旧的记事本。 当我想要…

Django集合Ueditor

语言版本环境:python3.6 1、win安装步骤: 1 git下载源码https://github.com/zhangfisher/DjangoUeditor 2 解压DjangoUeditor3-master.tar 3 cd C:\Users\fj\Desktop\DjangoUeditor3-master 4 python setup.py install 官方建议使用pip install Djang…

计算机二级高级应用考题,2016计算机二级MSOFFICE高级应用考试真题

2016计算机二级MSOFFICE高级应用考试真题离2016上半年的计算机等级考试只有一个多月了,为了帮助大家尽快考试过关,小编整理了计算机二级office考试题,希望能帮助到大家!(1)下列叙述中正确的是A)一个算法的空间复杂度大,则其时间复…

ANTLR –语义谓词

用antlr解析简单的语法很简单 。 您要做的就是使用正则表达式描述您的语言,并让antlr生成词法分析器和解析器。 解析大型或复杂的语言有时会需要更多,因为仅使用正则表达式描述它们是困难的,甚至是不可能的。 语义谓词是在语法内部编写的Jav…

python输入一个数组输出24进制式的时间_4.4 用于数组的文件输入输出 线性代数...

Numpy能够读写磁盘上的文本数据或二进制数据。这一小节只讨论Numpy的内置二进制格式,因为更多的用户会使用pandas或其它工具加载文本或表格数据(见第6章)。np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式…

DBMS-数据库设计与E-R模型:E-R模型、约束、E-R图、E-R扩展特性、E-R图转换为关系模式、UML建模...

设计过程概览 1. 设计阶段 最初阶段:刻画未来数据库用户的数据需求,产品为用户需求规格说明; 概念设计阶段(conceptual-design phase):(关注描述抽象数据及其联系,通常使用实体-联系…

tooltip.css-2.0文档

tooltip.css 纯CSS鼠标提示工具。 v. 2.0.0 更新日期&#xff1a;2018.4.12 预览DEMO。 安装&#xff1a; 只需在页面中引入"tooltip.css"或“tooltip.min.css”文件即可。 如&#xff1a; <link rel"stylesheet" href"css/tooltip.css"…

Java虚拟机:如何判定哪些对象可回收?

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请注明出处&#xff0c;欢迎交流学习&#xff01; 在堆内存中存放着Java程序中几乎所有的对象实例&#xff0c;堆内存的容量是有限的&#xff0c;Java虚拟机会对堆内存进行管理&#xff0c;回收已经“死去”的对象&…

html标签object和embed,html标签object和embed的区别

object和embed的区别The code in bold above is the actual code that you need to place in your page to embed a FusionCharts chart.In the above code, weveused and tags to embed the 3D Column Chart (Column3D.swf) within the HTML page.used &dataUrlData.xml u…

Apache Apollo REST API

Apache Apollo是新一代&#xff0c;高性能&#xff0c;多协议的消息传递代理&#xff0c;它是从头开始构建的&#xff0c;可以替代ActiveMQ5.x。 我过去曾在博客上发表过文章 &#xff08;第一部分已经与第二部分一起发布了&#xff09;。 Apollo的非阻塞异步体系结构使其速度…

bzoj1588 [HNOI2002]营业额统计

1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 17931 Solved: 7391[Submit][Status][Discuss]Description 营业额统计 Tiger最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 T…

python管道通信_Python进程通信之匿名管道实例讲解

匿名管道管道是一个单向通道,有点类似共享内存缓存.管道有两端,包括输入端和输出端.对于一个进程的而言,它只能看到管道一端,即要么是输入端要么是输出端.os.pipe()返回2个文件描述符(r, w),表示可读的和可写的.示例代码如下:复制代码 代码如下:#!/usr/bin/pythonimport timeim…

css3中的box-sizing属性的使用

box-sizing属性用来定义元素的width和height所表示的区域,该属性一般有三种值&#xff1a;content-box、border-box、inherit。 其中inherit表示box-sizing的值应该从父元素继承。 content-box和border-box的主要区别就是元素的width和height的值包不包括border、padding这两…

ES6扩展运算符...进行的数组删除

今天写了按照React小书写了Reducer&#xff0c;发现基础真是太重要了&#xff0c;所有关于上层建筑的细节都需要回到下层细节中去寻找&#xff0c;而且现在的基础也由ES3变成了ES6了。 const ADD_USER "ADD_USER" const DELETE_USER "DELETE_USER" const…