第1章 计算机科学并不适合所有人 1
1.1一些基础知识 1
1.2常见游戏类型 1
1.2.1冒险类游戏 1
1.2.2动作类游戏 1
1.2.3益智解谜类游戏 2
1.2.4词汇类游戏 2
1.2.5策略与模拟经营类游戏 3
1.2.6角色扮演游戏 4
1.2.7驾驶类游戏 4
1.2.8桌面式和卡牌式游戏 4
1.3常用开发术语 5
1.3.1伪码 5
1.3.2算法 5
1.3.3过程式编程 5
1.3.4面向对象编程 5
1.3.5设计模式 6
1.3.6类 6
1.3.7 Public、Protected、Private和Internal 7
1.4游戏特有的开发术语 7
1.4.1人工智能 7
1.4.2游戏循环(或主循环) 7
1.4.3游戏视角 8
1.4.4卷动背景 8
1.4.5区块式游戏 8
1.5 Flash程序开发术语 9
1.5.1舞台 9
1.5.2显示对象 9
1.5.3事件和侦听器 9
1.5.4包 9
1.5.5创作时事件、编译时事件及运行时事件 10
1.6醒一醒 10
第2章 最佳编程工具 11
2.1倒叙几句 11
2.2 Flash的一些优点 12
2.2.1玩家占有率 12
2.2.2灵活性 12
2.2.3上市速度 12
2.2.4美观性 13
2.3白璧微瑕 13
2.3.1缺点:代码编辑器 13
2.3.2解决方案:使用附加工具 14
2.3.3缺点:性能及内存管理 14
2.3.4解决方案:使用第三方解决方案或自己创建 15
2.3.5缺点:内容调试 16
2.3.6解决方案:使用跟踪输出与自定义工具 16
2.3.7缺点:缺乏内建游戏库和工具 17
2.3.8解决方案:自己开发工具或寻找开源工具 17
2.4不要和Flash对抗 17
2.5 Flash所能创建的内容 18
2.5.1动画与游戏 18
2.5.2应用程序与游戏 18
2.5.3网站与游戏 18
2.5.4 Flash与传统游戏开发 19
2.6最佳创作工具 19
第3章 一份计划抵得上1000片阿司匹林 20
3.1步骤1 20
3.2步骤2 20
3.3步骤3 21
3.4步骤4 23
3.5步骤5 24
3.6步骤6(可选) 26
第4章 //注释太棒了! 29
4.1适当的提醒 29
4.2部分1:类 29
4.2.1包 30
4.2.2类就像文件一样 30
4.2.3构造函数 30
4.2.4常量、变量与方法 31
4.2.5 getter与setter方法 32
4.2.6类标识符 33
4.2.7继承与多态 34
4.2.8接口 36
4.2.9将Flash中的资源与类链接起来 38
4.2.10类与基类 39
4.2.11使用没有类文件的导出元件 41
4.2.12 getDefinitionByName与Casting 41
4.3部分2:事件 42
4.3.1 dispatchEvent方法 42
4.3.2 addEventListener方法、removeEventListener方法以及事件流程中的各阶段 43
4.3.3事件的传播与取消 46
4.3.4自定义事件 46
4.4部分3:错误 47
4.4.1 try、catch、finally 48
4.4.2抛出自定义错误 49
4.5部分4:数据结构与列表 50
4.5.1 Object 50
4.5.2数组 51
4.5.3 Vector 53
4.5.4 Dictionary 53
4.5.5 ByteArray 54
4.5.6到底该使用哪种列表 54
4.5.7自定义数据结构 55
4.6部分5:让所有人都能读懂你的注释 55
4.7部分6:Flash为什么会这么做 56
4.7.1事件流程 56
4.7.2帧脚本 57
4.7.3使用多个SWF文件 59
4.7.4内存垃圾回收 60
4.8本章小结 62
第5章 最低要求与架构师所采用的方法 63
5.1简单地进行封装——类与容器 63
5.2将有关数值存储到变量与常量中 64
5.3不要信任舞台 65
5.4不要使用不理解或不适用的架构或设计模式 65
5.5要把握好向别人展示自己作品的最佳时机 66
5.6转换到架构 66
5.7 OOP概念 66
5.7.1封装 67
5.7.2继承 67
5.7.3多态性 68
5.7.4接口 68
5.8游戏开发中的实用OOP技巧 69
5.9单例模式:一种良好的文档模式 70
5.10本章小结 72
第6章 管理资源与使用图像 73
6.1一种更好的文件格式 73
6.2小议组织库元件 74
6.3使用图像 75
6.4常用的光栅图像格式 76
6.4.1压缩 79
6.4.2平滑 80
6.4.3解块 80
6.4.4外部的图像编辑工具 80
6.5本章小结 82
第7章 让它动起来:ActionScript动画 83
7.1几个术语 83
7.1.1缓动 83
7.1.2序列 84
7.2是否补间?这是个问题 84
7.3由脚本驱动的简单射击游戏 85
7.3.1 Projectile类 85
7.3.2 SimpleShooter类 85
7.4记忆力游戏:补间动画 88
7.4.1 MemoryCard类 88
7.4.2 Memory类 89
7.5本章小结 93
第8章 如雷贯耳:如何使用音频 94
8.1常用音频格式 94
8.2常用导出设置 95
8.3使用外部文件 97
8.4声音编辑工具 98
8.5编写音效脚本 98
8.5.1理解与声音有关的类 99
8.5.2 SoundEngine类 99
8.5.3使用SoundEngine类 111
8.5.4 SoundMixer类 114
第9章 重塑“视频游戏” 116
9.1视频编解码器 116
9.2外部视频应用:过场与菜单 116
9.3 CutsceneManager类 119
9.4时间轴上的视频 125
9.4.1文件尺寸 125
9.4.2库:易于使用与杂乱无章 126
9.4.3性能表现 126
9.4.4自由的动态模糊 126
9.5建立内部视频 126
9.6本章小结 129
第10章 XML与动态内容 130
10.1引入数据:理解URLLoader类 130
10.2 XML 130
10.3 E4X 131
10.4纵横字谜 132
10.4.1 CrosswordTile类 135
10.4.2 CrosswordClue类 138
10.4.3 CrosswordPuzzle类 140
10.5内容并非只有现成的:纵横字谜编辑器 150
10.6数据传送 151
10.7示例:XML与Flash Vars的应用对比 151
10.8本章小结 153
第11章 就是一个词儿:数学 154
11.1 Math类 154
11.2部分1:几何学及三角学 154
11.3简要介绍一下弧度与Pi值 158
11.4 Flash中的3D 161
11.4.1位置 162
11.4.2旋转 162
11.5透视投影 163
11.6 Simple TunnelShooter范例 164
11.6.1基本机制 164
11.6.2所需类文件 164
11.6.3 Tunnel类 165
11.7部分2:物理学 179
11.7.1标量 179
11.7.2矢量 179
11.7.3 Vector3D类 179
11.7.4位移 180
11.7.5速度 180
11.7.6加速度 180
11.7.7摩擦力 180
11.7.8惯性 180
11.7.9物理仿真与假象 181
11.7.10真实性与期望值 181
11.8范例:顶视角的驱动引擎 181
11.8.1 Vehicle类 181
11.8.2Time类 184
11.8.3 Game类 185
11.9范例:顶视角且带有漂移效果的赛车游戏 189
11.10本章小结 192
第12章 别碰我:碰撞检测技术 193
12.1能力与需求 193
12.2 hitTestObject——最基本的检测方法 193
12.3 hitTestPoint——更先进的检测方法 194
12.4半径/距离检测法——极适合圆形的检测方法 199
12.5矩形边框检测法 201
12.5.1新的Enemy类 201
12.5.2 SimpleShooterCollisions类所新增的内容 202
12.5.3该方法的一些不足之处 204
12.6像素级精确的碰撞侦测与物理仿真 205
12.7这些办法都不灵?那就用鸡尾酒疗法 206
第13章 MixUp——简单的游戏引擎 207
13.1主文档 209
13.2 MixUP类 209
13.3Title类 212
13.4 RulesPanel类 212
13.5 Game类 213
13.6接口 216
13.7 GameBoard类 218
13.8 SourceImageEmbedded类 225
13.9 GameHistory类与Results类 227
13.10 SourceImageCamera类 229
13.11本章小结 232
第14章 技术大融合:制作平台游戏 233
14.1平台类型游戏 233
14.2数据流程 234
14.3游戏流程与功能 234
14.3.1游戏背景设定 235
14.3.2关卡设计及墙壁的作用 235
14.3.3出口 235
14.3.4玩家角色 235
14.3.5物品 236
14.3.6敌人 236
14.4关卡文件格式以及资源结构 237
14.4.1关卡的XML文件 237
14.4.2资源 SWF文件 240
14.4.3游戏所用类的概述 240
14.5引擎类 241
14.5.1 ISprite接口 241
14.5.2IPl ayer接口 242
14.5.3IEnemy接口 243
14.5.4IItem接口 243
14.5.5IPortal接口 244
14.6IWall接口 244
14.6.1 PlatformerEvent类 245
14.6.2 PortalDestinations类与PortalRequirement类 245
14.6.3 PlatformerConfig类 246
14.6.4 GridReference类 247
14.7 CollisionGrid类 249
14.8游戏实现类 267
14.9资源类 269
14.9.1 Player类 269
14.9.2 Enemy类 271
14.9.3 Item类 272
14.9.4 Portal类与Wall类 273
14.9.5游戏中的资源 275
14.10本章小结 277
第15章 Marble Runner:我们的第一款手机游戏 278
15.1部分1:开发iOS游戏的最佳实践 278
15.1.1滤镜(包括由PixelBender所创建的滤镜) 279
15.1.2矢量图形(及形状补间) 279
15.1.3文本处理 280
15.1.4补间动画 280
15.1.5绘图API、遮罩以及混合模式 281
15.1.6运行时加载的SWF文件 281
15.2利用GPU 281
15.3代码也很关键 282
15.3.1声明类型 283
15.3.2使用静态属性与函数 283
15.3.3确定最终答案 283
15.3.4放之四海而皆准的垃圾回收 284
15.3.5避免使用极其庞大的架构和库 284
15.3.6减少显示列表层级 285
15.3.7无需用事件来处理函数所擅长之处 285
15.4权衡:继承还是接口 286
15.5程序实例 286
15.5.1 XFL文档 287
15.5.2 Space.as 287
15.5.3 Rock.as 288
15.5.4文档类SpaceRocks.as 290
15.5.5 FrameRateProfiler类 292
15.6部分2:Marble Runner 293
15.7 Accelerometer类 293
15.8加速计数据是如何计算出来的 294
15.9 Marble Runner游戏 295
15.9.1 XFL文件 296
15.9.2游戏所用到的类 296
15.9.3 LabyrinthEngine 297
15.9.4 LabyrinthLevel 303
15.9.5 IBall、IHazard、 IWall 306
15.9.6基本文档类 307
15.9.7标题界面类 309
15.9.8得分排行榜界面类 310
15.9.9 GameClip类 314
15.9.10 Marble类 317
15.9.11HazardPit和StandardWall类 320
15.9.12 Results类 321
15.10游戏设计注意事项 323
15.10.1关卡设计 323
15.10.2风险与回报 323
15.11有待改进之处 324
15.11.1计分 324
15.11.2可拾取物品 324
15.11.3可卷动的关卡 324
第16章 桌上冰球:采用多点触摸的平板电脑多人游戏 325
16.1主题三重奏 325
16.2移动设备的多点触摸输入方式 326
16.3有限状态机 326
16.4利用Box2D来进行物理仿真 327
16.5双人桌上冰球游戏 328
16.5.1 XFL文件 328
16.5.2游戏所用类 329
16.5.3 Main.as 329
16.5.4 Title.as 331
16.5.5 Rules.as 331
16.5.6 GameTouchController.as 333
16.5.7 Game.as 336
16.5.8 AirHockeyEngine.as 345
16.5.9准备创建 353
16.6本章小结 353
第17章 找到就干掉:猎虫行动 354
17.1 bug 354
17.1.1 trace 354
17.1.2 Flash Tracer 356
17.1.3调试器 357
17.2性能与优化 358
17.2.1 FrameRateProfiler类 359
17.2.2 MemoryProfiler类 362
17.2.3 sampler包 366
17.3本章小结 369
第18章 当心恶贼 370
18.1恶意使用 370
18.1.1关闭不再需要的事件侦听器 370
18.1.2为所要接受的输入设置最低延时 371
18.1.3一经发现恶意使用就将游戏关闭 371
18.2数据保护 371
18.2.1内存攻击 371
18.2.2保护要发送与接收的数据 375
18.3 SWF文件保护 376
18.4本章小结 377
第19章 移动开发介绍 378
19.1移动设备:新的热点 378
19.2新增API 379
19.3开发流程:先A后I 379
19.3.1编译 379
19.3.2程序设置与设计 381
19.4第一个iPhone程序 382
19.4.1开发者证书 382
19.4.2 UDID 385
19.4.3 AppID 386
19.4.4供给配置文件 387
19.4.5 DemoApp 388
19.4.6 XFL文件 388
19.4.7文档类 389
19.5仅是开端 394
19.6改变设置 395
19.6.1文档分辨率 395
19.6.2发布设置 396
19.6.3部署 398
19.7本章小结 398
后记 Flash在游戏业中的前景 399
附录A 摄像头与麦克风 400
附录B 本地化 408
附录C JSFL——情人们的JavaScript 415
附录D 使用AMFPHP开发游戏 422