第1章 准备开始 1
1.1 本书学习路线图 1
1.2 使用实例代码 3
第一篇 基础篇 7
第2章 JavaScript语言基础 7
2.1 环境搭建 7
2.1.1 JavaScript编辑工具 7
2.1.2 JavaScript运行测试环境 9
2.1.3 HelloJS实例测试 9
2.2 标识符和保留字 14
2.2.1 标识符 14
2.2.2 保留字 14
2.3 常量和变量 14
2.3.1 常量 15
2.3.2 变量 15
2.3.3 命名规范 15
2.4 注释 16
2.5 JavaScript数据类型 17
2.5.1 数据类型 17
2.5.2 数据类型字面量 17
2.5.3 数据类型转换 18
2.6 运算符 20
2.6.1 算术运算符 20
2.6.2 关系运算符 23
2.6.3 逻辑运算符 24
2.6.4 位运算符 25
2.6.5 其他运算符 26
2.7 控制语句 27
2.7.1 分支语句 27
2.7.2 循环语句 30
2.7.3 跳转语句 33
2.8 数组 36
2.9 函数 36
2.9.1 使用函数 36
2.9.2 变量作用域 37
2.9.3 嵌套函数 37
2.9.4 返回函数 38
2.10 JavaScript中的面向对象 40
2.10.1 创建对象 40
2.10.2 常用内置对象 43
2.10.3 原型 45
2.11 Cocos2d-x JSAPI中JavaScript继承 46
本章小结 49
第3章 Cocos2d-x JS API与环境搭建 50
3.1 移动平台游戏引擎介绍 50
3.2 Cocos2d家谱 50
3.3 Cocos2d-x设计目标 51
3.4 搭建Cocos2d-x JS API开发环境 53
3.4.1 搭建WebStorm开发环境 53
3.4.2 安装VisualStudio开发工具 53
3.4.3 下载和使用Cocos2d-x JS API官方案例 54
3.4.4 配置Cocos2d-x环境 58
3.4.5 使用API文档 62
本章小结 62
第4章 Hello Cocos2d-x 63
4.1 第一个Cocos2d-x JSAPI游戏 63
4.1.1 创建工程 63
4.1.2 工程文件结构 64
4.1.3 代码解释 65
4.1.4 本地方式运行 69
4.1.5 调试本地代码 71
4.1.6 Web方式运行 74
4.2 Cocos2d-x核心概念 75
4.2.1 导演 75
4.2.2 场景 75
4.2.3 层 76
4.2.4 精灵 76
4.2.5 菜单 76
4.3 Node与Node层级架构 77
4.3.1 Node中重要的操作 78
4.3.2 Node中重要的属性 79
4.3.3 游戏循环与调度 81
4.4 Cocos2d-x坐标系 84
4.4.1 UI坐标 84
4.4.2 OpenGL坐标 84
4.4.3 世界坐标和模型坐标 85
本章小结 89
第5章 标签和菜单 90
5.1 使用标签 90
5.1.1 cc.LabelTTF 91
5.1.2 cc.LabelAtlas 93
5.1.3 cc.LabelBMFont 94
5.2 使用菜单 96
5.2.1 文本菜单 96
5.2.2 精灵菜单和图片菜单 98
5.2.3 开关菜单 101
本章小结 103
第6章 精灵 104
6.1 Sprite精灵类 104
6.1.1 创建Sprite精灵对象 104
6.1.2 实例:使用纹理对象创建Sprite对象 105
6.2 精灵的性能优化 107
6.2.1 使用纹理图集 107
6.2.2 使用精灵帧缓存 109
本章小结 111
第7章 场景与层 112
7.1 场景与层的关系 112
7.2 场景切换 112
7.2.1 场景切换相关函数 112
7.2.2 场景过渡动画 116
7.3 场景的生命周期 117
7.3.1 生命周期函数 118
7.3.2 多场景切换生命周期 119
本章小结 120
第8章 动作、特效和动画 121
8.1 动作 121
8.1.1 瞬时动作 122
8.1.2 间隔动作 128
8.1.3 组合动作 133
8.1.4 动作速度控制 137
8.1.5 回调函数 141
8.2 特效 144
8.2.1 网格动作 145
8.2.2 实例:特效演示 146
8.3 动画 148
8.3.1 帧动画 148
8.3.2 实例:帧动画使用 149
本章小结 151
第9章 用户事件 152
9.1 事件处理机制 152
9.1.1 事件处理机制中三个角色 152
9.1.2 事件管理器 153
9.2 触摸事件 154
9.2.1 触摸事件的时间方面 154
9.2.2 触摸事件的空间方面 155
9.2.3 实例:单点触摸事件 155
9.2.4 实例:多点触摸事件 158
9.3 键盘事件 160
9.4 鼠标事件 161
9.5 加速度计与加速度事件 163
9.5.1 加速度计 163
9.5.2 实例:运动的小球 163
本章小结 165
第二篇 进阶篇 169
第10章 游戏背景音乐与音效 169
10.1 Cocos2d-x JS API中音频文件 169
10.1.1 音频文件介绍 169
10.1.2 Cocos2d-x JS API跨平台音频支持 170
10.2 使用AudioEngine引擎 171
10.2.1 音频文件的预处理 171
10.2.2 播放背景音乐 173
10.2.3 停止播放背景音乐 174
10.3 实例:设置背景音乐与音效 175
10.3.1 资源文件编写 176
10.3.2 HelloWorld场景实现 177
10.3.3 设置场景实现 179
本章小结 181
第11章 粒子系统 182
11.1 问题的提出 182
11.2 粒子系统基本概念 183
11.2.1 实例:打火机 184
11.2.2 粒子发射模式 185
11.2.3 粒子系统属性 185
11.3 内置粒子系统 188
11.3.1 内置粒子系统 188
11.3.2 实例:内置粒子系统 188
11.4 自定义粒子系统 191
本章小结 194
第12章 瓦片地图 195
12.1 地图性能问题 195
12.2 Cocos2d-x JS中瓦片地图API 196
12.3 实例:忍者无敌 198
12.3.1 设计地图 198
12.3.2 程序中加载地图 199
12.3.3 移动精灵 201
12.3.4 检测碰撞 203
12.3.5 滚动地图 208
本章小结 210
第13章 物理引擎 211
13.1 使用物理引擎 212
13.2 Chipmunk引擎 212
13.2.1 Chipmunk核心概念 212
13.2.2 使用Chipmunk物理引擎的一般步骤 213
13.2.3 实例:HelloChipmunk 213
13.2.4 实例:碰撞检测 217
13.2.5 实例:使用关节 220
本章小结 222
第14章 Cocos2d-x GUI控件 223
14.1 按钮 224
14.2 ImageView 226
14.3 文本控件 227
14.3.1 Text 227
14.3.2 TextBMFont 228
14.4 CheckBox 229
14.5 LoadingBar 230
14.6 滑块控件 232
本章小结 234
第15章 Cocos2d-x中的3D特性 235
15.1 一些3D概念 235
15.1.1 网格和模型 235
15.1.2 相机 235
15.1.3 投影 236
15.2 使用3D精灵 237
15.2.1 创建Sprite3D对象 237
15.2.2 实例:使用模型和纹理Sprite3D对象 237
15.3 3D模型文件格式 240
15.4 使用相机 241
15.4.1 创建和设置Camera对象 241
15.4.2 实例:使用Camera对象 241
15.5 3D粒子系统 243
15.5.1 创建PUParticleSystem3D对象 243
15.5.2 实例:创建Particle Universe 3D粒子 243
本章小结 245
第三篇 数据与网络篇 249
第16章 数据持久化 249
16.1 Cocos2d-x API JS中的数据持久化 249
16.2 localStorage数据持久化 249
16.2.1 cc.sys.localStorageAPI函数 249
16.2.2 实例:MyNotes 250
本章小结 252
第17章 基于HTTP的网络通信 253
17.1 网络结构 253
17.1.1 客户端服务器结构网络 253
17.1.2 点对点结构网络 253
17.2 HTTP与HTTPS协议 254
17.3 使用XMLHttpRequest对象开发客户端 255
17.3.1 使用XMLHttpRequest对象 255
17.3.2 实例:重构MyNotes 255
17.4 数据交换格式 261
17.5 JSON数据交换格式 263
17.5.1 文档结构 263
17.5.2 JSON解码与编码 264
17.5.3 实例:完善MyNotes 265
本章小结 270
第18章 基于Node.js的Socket.IO网络通信 271
18.1 Node.js 271
18.1.1 Node.js安装 271
18.1.2 Node.js测试 271
18.2 使用Socket.IO 273
18.2.1 Socket.IO服务器端开发 274
18.2.2 Cocos2d-x JS API的Socket.IO客户端 276
本章小结 279
第四篇 优化篇 283
第19章 性能优化 283
19.1 缓存创建和清除缓存 283
19.1.1 场景与资源 283
19.1.2 缓存创建和清除时机 284
19.2 图片与纹理优化 286
19.2.1 选择图片格式 286
19.2.2 拼图 287
19.2.3 纹理像素格式 289
19.2.4 背景图片优化 289
19.2.5 纹理缓存异步加载 290
19.3 JSB内存管理 293
19.4 使用Bake层 296
19.5 使用对象池 297
19.5.1 对象池API 297
19.5.2 实例:发射子弹 298
本章小结 299
第五篇 多平台发布篇 303
第20章 移植到Web平台 303
20.1 Web服务器与移植 303
20.1.1 Apache HTTP Server安装 304
20.1.2 移植到Web服务器 308
20.2 问题汇总 309
20.2.1 JS文件的压缩与代码混淆 310
20.2.2 判断平台 311
20.2.3 资源不能加载问题 312
本章小结 314
第21章 移植到本地Android平台 315
21.1 搭建交叉编译和打包环境 315
21.1.1 Android SDK安装 317
21.1.2 管理Android SDK 318
21.1.3 管理Android开发模拟器 318
21.1.4 Android NDK安装 321
21.1.5 设置环境变量 323
21.2 交叉编译、打包和运行 324
21.2.1 使用cocos命令行工具 324
21.2.2 Android.mk编译文件 324
21.3 移植问题汇总 327
21.3.1 JavaScript文件编译问题 327
21.3.2 横屏与竖屏设置问题 328
本章小结 329
第22章 移植到本地iOS平台 330
22.1 iOS开发环境搭建 330
22.1.1 Xcode安装和卸载 330
22.1.2 Xcode操作界面 331
22.2 编译与运行 334
22.3 移植问题汇总 336
22.3.1 iOS平台声音移植问题 336
22.3.2 使用PVR纹理格式 338
22.3.3 横屏与竖屏设置问题 340
22.4 多分辨率屏幕适配 341
22.4.1 问题的提出 341
22.4.2 分辨率策略 342
本章小结 346
第六篇 实战篇 349
第23章 使用Git管理程序代码版本 349
23.1 代码版本管理工具——Git 349
23.1.1 版本控制历史 349
23.1.2 术语和基本概念 350
23.1.3 Git环境配置 350
23.1.4 Git常用命令 351
23.2 代码托管服务——GitHub 353
23.2.1 创建和配置GitHub账号 354
23.2.2 创建代码库 356
23.2.3 删除代码库 357
23.2.4 派生代码库 357
23.2.5 GitHub协同开发 362
23.3 实例:Cocos2d-x游戏项目协同开发 362
23.3.1 提交到GitHub代码库 363
23.3.2 克隆GitHub代码库 365
23.3.3 重新获得GitHub代码库 366
本章小结 366
第24章 Cocos2d-x JS API敏捷开发项目实战——迷失航线手机游戏 367
24.1 迷失航线游戏分析与设计 367
24.1.1 迷失航线故事背景 367
24.1.2 需求分析 367
24.1.3 原型设计 368
24.1.4 游戏脚本 369
24.2 任务1:游戏工程的创建与初始化 370
24.2.1 迭代1.1:创建工程 370
24.2.2 迭代1.2:添加资源文件 370
24.2.3 迭代1.3:添加常量文件SystemConst.js 371
24.2.4 迭代1.4:多分辨率适配 372
24.2.5 迭代1.5:配置文件resource.js 373
24.2.6 迭代1.6:发布到GitHub 374
24.3 任务2:创建Home场景 375
24.3.1 迭代2.1:添加场景和层 375
24.3.2 迭代2.2:添加菜单 376
24.4 任务3:创建设置场景 377
24.5 任务4:创建帮助场景 380
24.6 任务5:游戏场景实现 381
24.6.1 迭代5.1:创建敌人精灵 381
24.6.2 迭代5.2:创建玩家飞机精灵 385
24.6.3 迭代5.3:创建炮弹精灵 387
24.6.4 迭代5.4:初始化游戏场景 388
24.6.5 迭代5.5:游戏场景菜单实现 391
24.6.6 迭代5.6:玩家飞机发射炮弹 392
24.6.7 迭代5.7:炮弹与敌人的碰撞检测 393
24.6.8 迭代5.8:玩家飞机与敌人的碰撞检测 395
24.6.9 迭代5.9:玩家飞机生命值显示 397
24.6.10 迭代5.10:显示玩家得分情况 398
24.7 任务6:游戏结束场景 398
本章小结 400
第25章 把迷失航线游戏发布到Google play应用商店 401
25.1 谷歌Android应用商店Google play 401
25.2 还有“最后一公里” 402
25.2.1 JavaScript文件编译 402
25.2.2 添加图标 402
25.2.3 生成数字签名文件 403
25.2.4 应用程序打包 404
25.3 发布产品 405
25.3.1 上传APK 405
25.3.2 填写商品详细信息 407
25.3.3 定价和发布范围 407
本章小结 410
第26章 把迷失航线游戏发布到苹果App Store 411
26.1 苹果的App Store 411
26.2 还有“最后一公里” 413
26.2.1 添加图标 413
26.2.2 添加启动界面 414
26.2.3 修改发布产品属性 417
26.3 iOS设备测试 419
26.3.1 Xcode设置 420
26.3.2 设备设置 422
26.4 为发布进行编译 424
26.4.1 创建开发者证书 424
26.4.2 创建App ID 430
26.4.3 创建描述文件 433
26.4.4 发布编译 434
26.5 发布上架 438
26.5.1 创建应用 438
26.5.2 应用定价 441
26.5.3 基本信息输入 442
26.5.4 上传应用 446
26.5.5 提交审核 447
26.6 常见审核不通过的原因 450
26.6.1 功能问题 450
26.6.2 用户界面问题 450
26.6.3 商业问题 450
26.6.4 不当内容 451
26.6.5 其他问题 451
本章小结 451