第1章 准备开始 1
1.1 本书学习路线图 1
1.2 使用实例代码 2
第一篇 基础篇 6
第2章 JavaScript语言基础 6
2.1 环境搭建 6
2.1.1 JavaScript编辑工具 6
2.1.2 JavaScript运行测试环境 7
2.1.3 HelloJS实例测试 8
2.2 标识符和保留字 12
2.2.1 标识符 12
2.2.2 保留字 12
2.3 常量和变量 13
2.3.1 常量 13
2.3.2 变量 13
2.3.3 命名规范 13
2.4 注释 14
2.5 JavaScript数据类型 15
2.5.1 数据类型 15
2.5.2 数据类型字面量 16
2.5.3 数据类型转换 16
2.6 运算符 18
2.6.1 算术运算符 18
2.6.2 关系运算符 21
2.6.3 逻辑运算符 23
2.6.4 位运算符 24
2.6.5 其他运算符 25
2.7 控制语句 26
2.7.1 分支语句 26
2.7.2 循环语句 29
2.7.3 跳转语句 32
2.8 数组 35
2.9 函数 35
2.9.1 使用函数 36
2.9.2 变量作用域 36
2.9.3 嵌套函数 37
2.9.4 返回函数 38
2.10 JavaScript中的面向对象 39
2.10.1 创建对象 40
2.10.2 常用内置对象 42
2.10.3 原型 44
2.11 Cocos2d-JS中的JavaScript继承 46
本章小结 48
第3章 Hello Cocos2d-JS 49
3.1 移动平台游戏引擎 49
3.2 Cocos2d游戏引擎 49
3.2.1 Cocos2d游戏引擎家谱 49
3.2.2 Cocos2d-x引擎 50
3.2.3 Cocos2d-JS引擎 51
3.3 搭建Cocos2d-JS开发环境 52
3.3.1 搭建WebStorm开发环境 52
3.3.2 搭建Cocos Code IDE开发环境 52
3.3.3 下载和使用Cocos2d-JS官方案例 56
3.3.4 使用API文档 61
3.4 第一个Cocos2d-JS游戏 62
3.4.1 创建工程 62
3.4.2 在Cocos Code IDE中运行 65
3.4.3 在WebStorm中运行 68
3.4.4 工程文件结构 69
3.4.5 代码解释 69
3.5 Cocos2d-JS核心概念 75
3.5.1 导演 75
3.5.2 场景 75
3.5.3 层 76
3.5.4 精灵 76
3.5.5 菜单 77
3.6 Node与Node层级架构 78
3.6.1 Node中重要的操作 78
3.6.2 Node中重要的属性 79
3.6.3 游戏循环与调度 80
3.7 Cocos2d-JS坐标系 83
3.7.1 UI坐标 83
3.7.2 OpenGL坐标 83
3.7.3 世界坐标和模型坐标 84
本章小结 89
第4章 标签和菜单 90
4.1 使用标签 90
4.1.1 cc.LabelTTF 90
4.1.2 cc.LabelAtlas 92
4.1.3 cc.LabelBMFont 94
4.2 使用菜单 95
4.2.1 文本菜单 96
4.2.2 精灵菜单和图片菜单 97
4.2.3 开关菜单 100
本章小结 102
第5章 精灵 103
5.1 Sprite精灵类 103
5.1.1 创建Sprite精灵对象 103
5.1.2 实例:使用纹理对象创建Sprite对象 104
5.2 精灵的性能优化 105
5.2.1 使用纹理图集 105
5.2.2 使用精灵帧缓存 108
本章小结 110
第6章 场景与层 111
6.1 场景与层的关系 111
6.2 场景切换 111
6.2.1 场景切换相关函数 112
6.2.2 场景过渡动画 117
6.3 场景的生命周期 118
6.3.1 生命周期函数 118
6.3.2 多场景切换生命周期 119
本章小结 121
第7章 动作、特效和动画 122
7.1 动作 122
7.1.1 瞬时动作 123
7.1.2 间隔动作 129
7.1.3 组合动作 135
7.1.4 动作速度控制 140
7.1.5 回调函数 144
7.2 特效 148
7.2.1 网格动作 148
7.2.2 实例:特效演示 149
7.3 动画 151
7.3.1 帧动画 151
7.3.2 实例:帧动画使用 152
本章小结 154
第8章 Cocos2d-JS用户事件 155
8.1 事件处理机制 155
8.1.1 事件处理机制中的三个角色 155
8.1.2 事件管理器 156
8.2 触摸事件 157
8.2.1 触摸事件的时间方面 157
8.2.2 触摸事件的空间方面 158
8.2.3 实例:单点触摸事件 158
8.2.4 实例:多点触摸事件 161
8.3 键盘事件 163
8.4 鼠标事件 164
8.5 加速度计与加速度事件 166
8.5.1 加速度计 166
8.5.2 实例:运动的小球 167
本章小结 169
第二篇 进阶篇 172
第9章 游戏背景音乐与音效 172
9.1 Cocos2d-JS中音频文件 172
9.1.1 音频文件 172
9.1.2 Cocos2d-JS跨平台音频支持 173
9.2 使用AudioEngine引擎 174
9.2.1 音频文件的预处理 174
9.2.2 播放背景音乐 176
9.2.3 停止播放背景音乐 177
9.3 实例:设置背景音乐与音效 178
9.3.1 资源文件编写 179
9.3.2 HelloWorld场景实现 180
9.3.3 设置场景实现 182
本章小结 184
第10章 粒子系统 185
10.1 问题的提出 185
10.2 粒子系统基本概念 186
10.2.1 实例:打火机 186
10.2.2 粒子发射模式 187
10.2.3 粒子系统属性 188
10.3 Cocos2d-JS内置粒子系统 190
10.3.1 内置粒子系统 191
10.3.2 实例:内置粒子系统 191
10.4 自定义粒子系统 194
本章小结 197
第11章 瓦片地图 198
11.1 地图性能问题 198
11.2 Cocos2d-JS中瓦片地图API 199
11.3 实例:忍者无敌 201
11.3.1 设计地图 201
11.3.2 程序中加载地图 202
11.3.3 移动精灵 203
11.3.4 检测碰撞 205
11.3.5 滚动地图 210
本章小结 212
第12章 物理引擎 213
12.1 使用物理引擎 214
12.2 Chipmunk引擎 214
12.2.1 Chipmunk核心概念 214
12.2.2 使用Chipmunk物理引擎的一般步骤 214
12.2.3 实例:HelloChipmunk 214
12.2.4 实例:碰撞检测 219
12.2.5 实例:使用关节 222
12.3 Box2D引擎 224
12.3.1 Box2D核心概念 224
12.3.2 使用Box2D物理引擎的一般步骤 225
12.3.3 实例:HelloBox2D 225
12.3.4 实例:碰撞检测 229
12.3.5 实例:使用关节 231
本章小结 233
第三篇 数据与网络篇 236
第13章 数据持久化 236
13.1 Cocos2d-JS中的数据持久化 236
13.2 localStorage数据持久化 236
13.2.1 cc.sys.localStorage API函数 236
13.2.2 实例:MyNotes 237
本章小结 239
第14章 基于HTTP网络通信 240
14.1 网络结构 240
14.1.1 客户端服务器结构网络 240
14.1.2 点对点结构网络 240
14.2 HTTP与HTTPS 241
14.3 使用XMLHttpRequest对象开发客户端 242
14.3.1 使用XMLHttpRequest对象 242
14.3.2 实例:重构MyNotes 243
14.4 数据交换格式 248
14.5 JSON数据交换格式 250
14.5.1 文档结构 250
14.5.2 JSON解码与编码 251
14.5.3 实例:完善MyNotes 252
本章小结 257
第15章 基于Node.js的Socket.IO网络通信 258
15.1 Node.js 258
15.1.1 Node.js安装 258
15.1.2 Node.js测试 259
15.2 使用Socket.IO 260
15.2.1 Socket.IO服务器端开发 261
15.2.2 Cocos2d-JS的Socket.IO客户端开发 263
15.3 实例:Socket.IO重构MyNotes 267
15.3.1 Socket.IO服务器端开发 268
15.3.2 Node.js访问SQLite数据库 268
15.3.3 Cocos2d-JS的Socket.IO客户端开发 272
本章小结 277
第四篇 优化篇 280
第16章 性能优化 280
16.1 缓存创建和清除 280
16.1.1 场景与资源 280
16.1.2 缓存创建和清除时机 281
16.2 图片与纹理优化 283
16.2.1 选择图片格式 283
16.2.2 拼图 284
16.2.3 纹理像素格式 285
16.2.4 背景图片优化 286
16.2.5 纹理缓存异步加载 287
16.3 JSB内存管理 290
16.4 使用Bake层 292
16.5 使用对象池 294
16.5.1 对象池API 294
16.5.2 实例:发射子弹 295
本章小结 296
第五篇 多平台移植篇 298
第17章 移植到Web平台 298
17.1 Web服务器与移植 298
17.1.1 Apache HTTP Server安装 299
17.1.2 移植到Web服务器 303
17.2 问题汇总 304
17.2.1 JS文件的压缩与代码混淆 305
17.2.2 判断平台 308
17.2.3 资源不能加载问题 309
本章小结 310
第18章 移植到本地iOS平台 311
18.1 iOS开发环境搭建 311
18.1.1 Xcode安装和卸载 311
18.1.2 Xcode操作界面 312
18.2 创建本地工程 315
18.3 编译与移植 316
18.4 移植问题汇总 318
18.4.1 iOS平台声音移植问题 318
18.4.2 使用PVR纹理格式 320
18.4.3 横屏与竖屏设置问题 322
18.5 多分辨率屏幕适配 323
18.5.1 问题的提出 323
18.5.2 分辨率策略 324
本章小结 328
第19章 移植到本地Android平台 329
19.1 搭建交叉编译和打包环境 329
19.1.1 安装Android SDK 331
19.1.2 管理Android SDK 332
19.1.3 管理Android开发模拟器 334
19.1.4 安装Android NDK 336
19.2 交叉编译 337
19.3 打包运行 338
19.4 移植问题汇总 340
19.4.1 JS文件编译问题 340
19.4.2 横屏与竖屏设置问题 340
本章小结 341
第六篇 实战篇 344
第20章 使用Git管理程序代码版本 344
20.1 代码版本管理工具——Git 344
20.1.1 版本控制历史 344
20.1.2 术语和基本概念 345
20.1.3 Git环境配置 345
20.1.4 Git常用命令 346
20.2 代码托管服务——GitHub 349
20.2.1 创建和配置GitHub账号 349
20.2.2 创建代码库 352
20.2.3 删除代码库 352
20.2.4 派生代码库 355
20.2.5 GitHub协同开发 357
20.3 实例:Cocos2d-JS游戏项目协同开发 358
20.3.1 提交到GitHub代码库 358
20.3.2 克隆GitHub代码库 360
20.3.3 重新获得GitHub代码库 360
本章小结 361
第21章 Cocos2d-JS敏捷开发项目实战——迷失航线手机游戏 362
21.1 迷失航线游戏分析与设计 362
21.1.1 迷失航线故事背景 362
21.1.2 需求分析 362
21.1.3 原型设计 363
21.1.4 游戏脚本 364
21.2 任务1:游戏工程的创建与初始化 365
21.2.1 迭代1.1:创建工程 365
21.2.2 迭代1.2:添加资源文件 365
21.2.3 迭代1.3:添加常量文件SystemConst.js 366
21.2.4 迭代1.4:多分辨率适配 368
21.2.5 迭代1.5:发布到GitHub 368
21.3 任务2:创建Loading场景 368
21.3.1 迭代2.1:修改启动界面 369
21.3.2 迭代2.2:配置文件resource.js 369
21.4 任务3:创建Home场景 371
21.4.1 迭代3.1:添加场景和层 371
21.4.2 迭代3.2:添加菜单 372
21.5 任务4:创建设置场景 374
21.6 任务5:创建帮助场景 376
21.7 任务6:游戏场景实现 378
21.7.1 迭代6.1:创建敌人精灵 378
21.7.2 迭代6.2:创建玩家飞机精灵 382
21.7.3 迭代6.3:创建炮弹精灵 384
21.7.4 迭代6.4:初始化游戏场景 385
21.7.5 迭代6.5:游戏场景菜单实现 388
21.7.6 迭代6.6:玩家飞机发射炮弹 390
21.7.7 迭代6.7:炮弹与敌人的碰撞检测 390
21.7.8 迭代6.8:玩家飞机与敌人的碰撞检测 393
21.7.9 迭代6.9:玩家飞机生命值显示 395
21.7.10 迭代6.10:显示玩家得分情况 395
21.8 任务7:游戏结束场景 396
本章小结 398
第22章 为迷失航线游戏添加广告 399
22.1 使用谷歌AdMob广告 399
22.1.1 注册AdMob账号 399
22.1.2 管理AdMob广告 399
22.1.3 AdMob广告类型 403
22.1.4 下载谷歌AdMob Ads SDK 403
22.2 为迷失航线游戏Android平台添加AdMob广告 405
22.2.1 Google play服务下载与配置 405
22.2.2 导入libcocos2dx类库工程到Eclipse 408
22.2.3 导入LostRoutes工程到Eclipse 408
22.2.4 编写AdMob相关代码 411
22.2.5 交叉编译、打包和运行 415
22.3 为迷失航线游戏iOS平台添加AdMob广告 415
22.3.1 Cocos2d-x引擎iOS平台下搭建AdMob开发环境 415
22.3.2 编写AdMob相关代码 419
本章小结 422
第23章 把迷失航线游戏发布到Google play应用商店 423
23.1 谷歌Android应用商店Google play 423
23.2 还有“最后一千米” 424
23.2.1 JS文件编译 424
23.2.2 添加图标 425
23.2.3 应用程序打包 425
23.3 发布产品 429
23.3.1 上传APK 429
23.3.2 填写商品详细信息 431
23.3.3 定价和发布范围 433
本章小结 435
第24章 把迷失航线游戏发布到苹果App Store应用商店 436
24.1 苹果的App Store 436
24.2 iOS设备测试 438
24.2.1 创建开发者证书 438
24.2.2 设备注册 443
24.2.3 创建App ID 444
24.2.4 创建配置概要文件 447
24.2.5 设备上运行 451
24.3 还有“最后一千米” 453
24.3.1 添加图标 453
24.3.2 添加启动界面 454
24.3.3 修改发布产品属性 455
24.3.4 为发布进行编译 456
24.3.5 应用打包 461
24.4 发布产品 462
24.4.1 创建应用及基本信息 462
24.4.2 应用定价信息 464
24.4.3 基本信息输入 464
24.4.4 上传应用前准备 470
24.4.5 上传应用 471
24.5 常见审核不通过的原因 474
本章小结 475