第1章 本书约定 1
1.1 使用实例代码 1
1.2 图示的约定 2
1.2.1 图中的箭头 3
1.2.2 图中的手势 3
1.2.3 图中的圈框 3
1.3 书中的UML图 4
1.3.1 类图 4
1.3.2 时序图 5
第2章 Cocos2d-x环境搭建 6
2.1 下载Cocos2d-x 6
2.2 搭建环境 7
2.2.1 基本工具安装 7
2.2.2 设置环境变量 10
2.3 开发Cocos2d-x游戏的IDE工具 11
2.3.1 使用Visual Studio开发工具 12
2.3.2 使用Xcode开发工具 14
本章小结 17
第3章 Cocos2d-x引擎 18
3.1 Cocos2d家谱 18
3.2 Cocos2d-x设计目标 19
3.3 第一个Cocos2d-x游戏 20
3.3.1 创建工程 21
3.3.2 Visual Studio工程文件结构 22
3.3.3 Xcode工程文件结构 22
3.3.4 代码解释 24
3.3.5 Win32平台下设置屏幕 30
3.3.6 工程中添加资源文件 31
3.4 Cocos2d-x核心概念 33
3.4.1 导演 33
3.4.2 场景 33
3.4.3 层 34
3.5 Node与Node层级架构 35
3.5.1 Node中的重要操作 36
3.5.2 Node中的重要属性 37
3.5.3 游戏循环与调度 39
3.6 Cocos2d-x坐标系 41
3.6.1 UI坐标 41
3.6.2 OpenGL坐标 41
3.6.3 世界坐标和模型坐标 42
本章小结 46
第4章 游戏中的文字 47
4.1 Cocos2d-x中的字符串 47
4.1.1 使用const char*和std::string 47
4.1.2 使用cocos2d::_String 48
4.1.3 Win32平台下的中文乱码问题 49
4.2 使用标签 50
4.2.1 使用Label类 51
4.2.2 标签中文无法正常显示的问题 54
4.3 位图字体制作 56
4.3.1 Glyph Designer工具 57
4.3.2 使用Glyph Designer制作位图字体 58
本章小结 62
第5章 Cocos2d-x中的数据结构 63
5.1 Cocos2d-x中两大类——Ref和Value 63
5.1.1 Cocos2d-x根类——Ref 64
5.1.2 包装类Value 64
5.2 Ref列表数据结构 66
5.2.1 _Array数据结构 66
5.2.2 实例:_Array数据结构 67
5.2.3 Vector<T>数据结构 70
5.2.4 实例:Vector数据结构 72
5.3 Ref字典数据结构 75
5.3.1 _Dictionary数据结构 75
5.3.2 实例:_Dictionary数据结构 76
5.3.3 Map<K,V>数据结构 80
5.3.4 实例:Map<K,V>数据结构 81
5.4 Value列表数据结构——ValueVector 84
5.4.1 ValueVector常用API 84
5.4.2 实例:使用ValueVector数据结构 85
5.5 Value字典数据结构——ValueMap和ValueMapIntKey 87
5.5.1 ValueMap和ValueMapIntKey常用API 88
5.5.2 实例:使用ValueMap数据结构 89
本章小结 92
第6章 菜单 93
6.1 菜单相关类 93
6.2 文本菜单 94
6.3 精灵菜单和图片菜单 96
6.4 开关菜单 99
本章小结 101
第7章 精灵 102
7.1 Sprite精灵类 102
7.1.1 创建Sprite精灵对象 102
7.1.2 实例:使用纹理对象创建Sprite对象 103
7.2 精灵的性能优化 105
7.2.1 使用纹理图集 105
7.2.2 使用精灵帧缓存 108
7.3 纹理图集制作 111
7.3.1 TexturePacker工具 111
7.3.2 使用TexturePacker制作纹理图集 113
本章小结 116
第8章 场景与层 117
8.1 场景与层的关系 117
8.2 场景切换 118
8.2.1 场景切换相关函数 118
8.2.2 场景过渡动画 123
8.3 场景的生命周期 124
8.3.1 生命周期函数 125
8.3.2 多场景切换生命周期 126
本章小结 128
第9章 动作和动画 129
9.1 基本动作 129
9.1.1 瞬时动作 130
9.1.2 间隔动作 136
9.1.3 组合动作 143
9.1.4 动作速度控制 149
9.1.5 函数调用 154
9.2 特效 159
9.2.1 网格动作 159
9.2.2 实例:特效演示 160
9.3 动画 164
9.3.1 帧动画 164
9.3.2 实例:帧动画使用 165
本章小结 168
第10章 用户事件 169
10.1 事件处理机制 169
10.1.1 事件分发器 170
10.1.2 触摸事件 171
10.1.3 实例:单点触摸事件 173
10.1.4 实例:使用Lambda表达式 177
10.1.5 键盘事件 180
10.1.6 鼠标事件 180
10.2 在层中进行事件处理 182
10.2.1 触摸事件 183
10.2.2 实例:单点触摸事件 184
10.3 加速度计与加速度事件 187
10.3.1 加速度计 187
10.3.2 使用事件分发器 188
10.3.3 使用层加速度计事件 189
10.3.4 实例:运动的小球 189
本章小结 192
第11章 Audio引擎 193
11.1 Cocos2d-x中音频文件 193
11.1.1 音频文件介绍 193
11.1.2 Cocos2d-x跨平台音频支持 194
11.2 使用Audio引擎 195
11.2.1 音频文件的预处理 195
11.2.2 播放背景音乐 196
11.2.3 停止播放背景音乐 198
11.2.4 背景音乐播放暂停与继续 199
11.3 实例:设置背景音乐与音效 200
11.3.1 AppDelegate实现 200
11.3.2 HelloWorld场景实现 202
11.3.3 设置场景实现 205
本章小结 209
第12章 粒子系统 210
12.1 问题的提出 210
12.2 粒子系统基本概念 211
12.2.1 实例:打火机 211
12.2.2 粒子发射模式 213
12.2.3 粒子系统属性 213
12.3 Cocos2d-x内置粒子系统 216
12.3.1 内置粒子系统 216
12.3.2 实例:内置粒子系统 216
12.4 自定义粒子系统 220
12.4.1 代码创建 220
12.4.2 plist文件创建 223
12.5 粒子系统设计工具Particle Designer 226
12.5.1 粒子设置面板 227
12.5.2 使用分享案例 228
12.5.3 粒子的输出 228
本章小结 229
第13章 瓦片地图 230
13.1 地图性能问题 230
13.2 Cocos2d-x中瓦片地图API 233
13.3 使用Tiled地图编辑器 234
13.3.1 新建地图 238
13.3.2 导入瓦片集 239
13.3.3 创建层 240
13.3.4 在普通层上绘制地图 242
13.3.5 在对象层上添加对象 244
13.4 实例:忍者无敌 246
13.4.1 设计地图 247
13.4.2 程序中加载地图 248
13.4.3 移动精灵 250
13.4.4 检测碰撞 252
13.4.5 滚动地图 257
本章小结 260
第14章 物理引擎 261
14.1 使用物理引擎 262
14.1.1 物理引擎核心概念 262
14.1.2 物理引擎与精灵关系 263
14.2 Cocos2d-x 3.x中物理引擎封装 264
14.2.1 Cocos2d-x 3.x物理引擎API 264
14.2.2 实例:HelloPhysicsWorld 268
14.2.3 实例:接触与碰撞检测 272
14.2.4 实例:使用关节 276
本章小结 279
第15章 内存管理 280
15.1 C++内存管理 280
15.1.1 内存分配区域 280
15.1.2 动态内存分配 281
15.2 Ref内存管理 283
15.2.1 内存引用计数 284
15.2.2 自动释放池 285
15.2.3 Ref内存管理规则 288
15.3 Ref内存管理设计模式 290
15.3.1 使用静态构造函数 290
15.3.2 使用访问器 293
15.4 其他类型内存管理 298
15.4.1 Value内存管理 298
15.4.2 Vector<T>和Map<K,V>内存管理 298
本章小结 298
第16章 Cocos2d-x多分辨率屏幕适配 299
16.1 屏幕适配问题的提出 299
16.2 Cocos2d-x屏幕适配 300
16.2.1 三种分辨率 300
16.2.2 分辨率策略 302
16.2.3 纹理图集资源适配 305
16.2.4 瓦片地图资源适配 307
本章小结 307
第17章 Cocos2d-x敏捷开发项目实战——迷失航线手机游戏 308
17.1 迷失航线游戏分析与设计 308
17.1.1 迷失航线故事背景 308
17.1.2 需求分析 308
17.1.3 原型设计 309
17.1.4 游戏脚本 310
17.2 任务1:游戏工程的创建与初始化 311
17.2.1 迭代1.1:创建工程 311
17.2.2 迭代1.2:多分辨率支持 311
17.2.3 迭代1.3:通用类与基类维护 313
17.3 任务2:创建Loading场景 317
17.3.1 迭代2.1:添加场景和层 317
17.3.2 迭代2.2:Loading动画 318
17.3.3 迭代2.3:异步加载纹理缓存 319
17.3.4 迭代2.4:异步预处理声音 320
17.4 任务3:创建Home场景 321
17.4.1 迭代3.1:添加场景和层 321
17.4.2 迭代3.2:添加菜单 323
17.5 任务4:创建设置场景 325
17.6 任务5:创建帮助场景 327
17.7 任务6:游戏场景实现 330
17.7.1 迭代6.1:创建敌人精灵 330
17.7.2 迭代6.2:创建玩家飞机精灵 335
17.7.3 迭代6.3:创建炮弹精灵 337
17.7.4 迭代6.4:初始化游戏场景 339
17.7.5 迭代6.5:游戏场景菜单实现 343
17.7.6 迭代6.6:玩家飞机发射炮弹 345
17.7.7 迭代6.7:炮弹与敌人的碰撞检测 346
17.7.8 迭代6.8:玩家飞机与敌人的碰撞检测 349
17.7.9 迭代6.9:玩家飞机生命值显示 352
17.7.10 迭代6.10:显示玩家得分情况 352
17.8 任务7:游戏结束场景 353
本章小结 354