第6章 精灵

精灵(sprite),它是一种可以集成入动画之中的图像对象,赋予它们各种行为,精灵并非Canvas API的一部分,,但都是从它衍生而来

本章将会实现三种设计模式:策略模式(精灵与绘制器解耦)、命令模式(精灵的动作)、享元模式(一个实例表示多个精灵)

painter属性是一个指向Painter对象的引用,使用paint(sprite,context)方法来绘制精灵,behaviors属性指向一个对象数组,数组中每个对象都会以execute(sprite,context,time)方法对精灵进行某种形式的操作。

精灵对象有两个方法paint()与update(),update()方法执行精灵的行为,执行的顺序为被加入的顺序,paint()方法则将精灵的绘制代理给绘制器来做

所有Painter对象都可以被归纳为以下三类:描边及填充绘制器、图像绘制器、精灵表绘制器

精灵对象不需要自己完成绘制,它会将绘制操作代理给另外一个对象来做。本质上讲Painter对象就是一些可以互相交换着使用的绘制算法

一张图片里包含动画的每一帧图片,就叫做精灵表(sprite sheet),复制一张图片比复制多张图片速度要快的多

第7章 物理效果

模拟重力加速度9.81m/s²转换为像素/米

抛物体垂直速度

钟摆运动

时间轴扭曲就是那些与时间呈非线性变化的属性(位置、颜色等)

第8章 碰撞检测

分离轴定理,也叫超平面分离定理,SAT

外接图形判别法:在二维平面中执行碰撞检测时,通常会根据物体外接图形的面积来判定(三维空间则按照体积)

外接矩形判别法:外接矩形经常被当作物体的轮廓来参与碰撞检测

事前碰撞检测,可以提前探知是否发生碰撞,由于这是根据当前帧速率来估算,如果帧速率变化,就会出错

外接圆判别法:两个圆心的距离小于两圆的半径只和

事后碰撞检测法,在碰撞发生后在做判断(是否已经发生了碰撞)

光线投射法,根据两条线相交的部分判定

以上方法并不适用任意多边形之间的碰撞检测,分离轴定理(SAT)与最小平移向量(MTV),分离轴定理只适用于凸多边形(所有内角小于180°)

分离轴定理(SAT)相当于将物体的阴影投到一面墙上,阴影重叠则碰撞,阴影部分数学上叫投影,墙叫做轴

只要在任意一条轴上找到互相分离的投影,就可以立即结束检测过程,判定未发生碰撞

投影轴

p1指向p2的向量叫做边缘向量,还需要一条垂直于边缘向量的法向量,叫做边缘法向量

圆形与多边形的碰撞检测,圆形可以近似看成一个有无数条边的正多边形

最小平移向量,指的是不再与另一个物体相撞所需要的最小距离

碰到后弹开

--------------------代码部分后期处理--------------------

本书完

HTML5 Canvas核心技术—图形、动画与游戏开发.pdf8的更多相关文章

  1. HTML5 Canvas核心技术图形动画与游戏开发 ((美)David Geary) 中文PDF扫描版​

    <html5 canvas核心技术:图形.动画与游戏开发>是html5 canvas领域的标杆之作,也是迄今为止该领域内容最为全面和深入的著作之一,是公认的权威经典.amazon五星级超级 ...

  2. HTML5 Canvas核心技术图形动画与游戏开发(读书笔记)----第一章,基础知识

    一,canvas元素 1 为了防止浏览器不支持canvas元素,我们设置“后备内容”(fallback content),下面紫色的字即为后备内容 <canvas id="canvas ...

  3. Html5 Canvas核心技术(图形,动画,游戏开发)--基础知识

    基础知识 canvas 元素可以说是HTML5元素中最强大的一个,他真正的能力是通过canvas的context对象表现出来的.该环境对象可以从canvas元素身上获得. <body> & ...

  4. HTML5 Canvas核心技术:图形、动画与游戏开发 PDF扫描版​

    HTML5 Canvas核心技术:图形.动画与游戏开发 内容简介: <HTML5 Canvas核心技术:图形.动画与游戏开发>中,畅销书作家David Geary(基瑞)先生以实用的范例程 ...

  5. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf2

    事件处理: HTML5应用程序是以事件来驱动的,可以在canvas中增加一个事件监听器,当事件发生时,浏览器就会调用这个监听器 //方法一canvas.onmousedown=function(e){ ...

  6. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf7

    性能 运行putImageData()比drawImage()慢,同等条件下优先考虑drawImage() 操作图像数据需要遍历大量数据,应该注意几点: 1)避免在循环体中直接访问对象属性,应当保存在 ...

  7. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf6

    操作图像的像素:getImageData() putImageData() ImageData对象 调用getImageData()方法实际是获取了一个指向ImageData对象的引用,返回的对象包含 ...

  8. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf1

    canvas元素可以说是HTML5元素中功能最强大的一个,它真正的能力是通过Canvas的context对象(绘图上下文)表现出来的 fillText()方法使用fillStyle属性来填充文本中的字 ...

  9. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf5

    文本的定位 水平与垂直定位:当使用strokeText()和fillText()绘制文本时,指定了所绘文本的X与Y坐标,还有textAlign与textBaseline两个属性 textAlign:s ...

随机推荐

  1. C/C++中memset函数

    本文学习参考http://baike.baidu.com/link?url=ZmSyY8ciB_nJt9KM-W2fiEFJrC2mugFsLqRdY2b4pLe8rD_jRXyN7_pj0GBBD2 ...

  2. How to change Visual Studio default environment setting

    如何改变 Visual Studio 的默认环境设置: 1. 工具栏 Tools --> Import and Export Settings... 2. 选择 Reset All Settin ...

  3. Gradle实战教程之依赖管理

    这是从我个人网站中复制过来的,原文地址:http://coolshell.info/blog/2015/05/gradle-dependency-management.html,转载请注明出处. 简要 ...

  4. 九度OJ 1042 Coincidence -- 动态规划(最长公共子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1042 题目描述: Find a longest common subsequence of two strings ...

  5. EF 存储过程(上)

    目前,EF对存储过程的支持并不完善.存在以下问题:> EF不支持存储过程返回多表联合查询的结果集.> EF仅支持返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况.&g ...

  6. mysql 事务类型表的用法

    mysql关联表(references)的条件:1.两个表必须是 InnoDB表类型2.使用在外键关系的域必须为索引型(Index)3.使用外键关系的域必须与数据类型相似 以下是父表和子表的例子:创建 ...

  7. express的基本配置项

    express自动生成的app.js中有一段代码用app.set和app.use对express进行配置,但这些配置都是什么意思,以及都能做哪些配置并没有展开.这一节就专门来讲express的配置.上 ...

  8. Java RMI(远程方法调用)开发

    参考 https://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-arch2.html http://www.cnblogs.com/wxi ...

  9. 【WPF】Dispatcher及线程操作

    WPF 应用程序启动后,会有两个线程: 1. 一个是用来处理UI呈现(处理UI的请求,比如输入和展现等操作). 2. 一个用来管理 UI的 (对UI元素及整个UI进行管理). 像Winform一样,W ...

  10. SQL Server执行计划

    要理解执行计划,怎么也得先理解,那各种各样的名词吧.鉴于自己还不是很了解.本文打算作为只写懂的,不懂的懂了才写. 在开头要先说明,第一次看执行计划要注意,SQL Server的执行计划是从右向左看的. ...