第一部分 引擎基础
第1章 Hello Cocos2d-x 2
1.1 引擎简介 2
1.2 搭建开发环境 3
1.3 Hello World 5
1.4 Hello World分析 6
1.5 测试样例简介 10
1.6 小结 11
第2章 在游戏开始之前 12
2.1 基本概念 12
2.1.1 场景与流程控制 12
2.1.2 层 13
2.1.3 精灵 14
2.1.4 节点与渲染树 14
2.1.5 动作与动画 16
2.2 Cocos2d-x代码风格 16
2.2.1 命名空间与类名称 16
2.2.2 构造函数与初始化 17
2.2.3 选择器 18
2.2.4 属性 19
2.2.5 单例 20
2.3 C++中的Cocos2d-x内存管理 21
2.3.1 复杂的内存管理 21
2.3.2 现有的智能内存管理技术 21
2.3.3 Cocos2d-x的内存管理机制 22
2.3.4 工厂方法 25
2.3.5 关于对象传值 26
2.3.6 释放:release()还是autorelease()? 26
2.3.7 容器 27
2.3.8 相关辅助宏 28
2.3.9 Cocos2d-x内存管理原则 28
2.4 生命周期分析 29
2.5 小结 31
第3章 游戏的基本元素 32
3.1 CCDirector:大总管 32
3.2 CCScene:场景 33
3.3 CCLayer:层 34
3.4 CCSprite:精灵 35
3.4.1 纹理 35
3.4.2 创建精灵 35
3.4.3 设置精灵的属性 36
3.4.4 向层中添加精灵 36
3.4.5 常用成员 38
3.5 CCNode与坐标系 39
3.5.1 坐标系与绘图属性 40
3.5.2 节点的组织 43
3.5.3 定时器事件 44
3.5.4 其他事件 46
3.6 Cocos2d-x内置的常用层 46
3.7 Cocos2d-x调度原理 49
3.7.1 游戏主循环 50
3.7.2 定时调度器 53
3.8 小结 58
第4章 动作 60
4.1 基本概念 60
4.2 瞬时动作 61
4.3 持续性动作 62
4.3.1 位置变化动作 63
4.3.2 属性变化动作 64
4.3.3 视觉特效动作 65
4.3.4 控制动作 65
4.4 复合动作 66
4.5 变速动作 68
4.6 使鱼动起来 70
4.7 创建自定义动作 74
4.7.1 一点简单的物理知识 74
4.7.2 创建自定义动作 75
4.8 让动作更平滑流畅 77
4.9 Cocos2d-x动作原理 79
4.9.1 动作类的结构 79
4.9.2 动作的更新 80
4.9.3 CCActionManager的工作原理 81
4.10 小结 83
第5章 动画与场景特效 84
5.1 动画 84
5.1.1 概述 84
5.1.2 使用动画 85
5.2 场景特效 86
5.3 小结 87
第6章 音乐与音效 88
6.1 使用音效引擎 88
6.2 支持格式 89
6.3 播放音乐与音效 89
6.3.1 预加载 89
6.3.2 播放与停止 90
6.3.3 暂停与恢复播放 90
6.3.4 其他成员 91
6.4 小结 92
第7章 用户输入 93
7.1 触摸输入 93
7.1.1 使用CCLayer响应触摸事件 93
7.1.2 两种Cocos2d-x触摸事件 94
7.2 触摸分发器原理 97
7.3 触摸中的陷阱 100
7.4 使用触摸事件 100
7.4.1 使炮台动起来 100
7.4.2 识别简单的手势 103
7.5 加速度计 105
7.6 文字输入 107
7.7 小结 110
第二部分 引擎进阶
第8章 粒子效果 114
8.1 Cocos2d-x中的粒子系统 114
8.2 粒子效果编辑器 117
8.2.1 界面介绍 117
8.2.2 制作火焰特效 121
8.3 小结 124
第9章 大型地图 125
9.1 瓦片地图 125
9.2 编辑器 126
9.2.1 Tiled Map Editor简介 126
9.2.2 创建水底世界 127
9.3 导入游戏 131
9.4 实现层次感 132
9.5 预定义属性 135
9.6 小结 135
第10章 Cocos2d-x绘图原理及优化 136
10.1 OpenGL基础 136
10.1.1 OpenGL简介 136
10.1.2 绘图 140
10.1.3 矩阵与变换 143
10.2 Cocos2d-x绘图原理 145
10.2.1 精灵的绘制 145
10.2.2 渲染树的绘制 147
10.2.3 坐标变换 150
10.3 TexturePacker与优化 152
10.3.1 绘图瓶颈 152
10.3.2 碎图压缩与精灵框帧 153
10.3.3 批量渲染 154
10.3.4 色彩深度优化 156
10.4 小结 157
第11章 OpenGL绘图技巧 159
11.1 自定义绘图 159
11.2 遮罩层 161
11.3 数据交流 164
11.4 可编程管线 168
11.4.1 可编程着色器 168
11.4.2 CCGLProgram 168
11.4.3 变量传递 169
11.5 水纹效果 170
11.5.1 着色器程序 171
11.5.2 ShaderNode类 172
11.5.3 uniform变量准备 174
11.5.4 绘制 175
11.5.5 添加到场景 176
11.6 CCGrid3D 177
11.7 再议效率 178
11.8 小结 179
第12章 物理引擎 180
12.1 新的超级武器 180
12.2 Box2D引擎简介 181
12.3 接入Box2D 181
12.4 更新状态 184
12.5 调试绘图 186
12.6 碰撞检测 187
12.7 弹射 189
12.8 精确碰撞 190
12.9 小结 191
第三部分 游戏开发进阶
第13章 数据持久化 194
13.1 CCUserDefault 194
13.2 格式化存储 194
13.3 本地文件存储 196
13.4 XML与JSON 196
13.5 加密与解密 200
13.6 SQLite 201
13.7 小结 205
第14章 网络 206
14.1 网络传输架构 206
14.2 CURL 206
14.3 简单传输 207
14.4 非阻塞传输 209
14.5 用户记录 211
14.6 多人对战与同步问题 211
14.6.1 时间同步 212
14.6.2 鱼群同步 212
14.7 校验 213
14.8 小结 213
第15章 缓存与池 215
15.1 移动设备昂贵的CPU与内存 215
15.2 缓存机制:预加载与重复使用 216
15.3 Cocos2d-x中的缓存 216
15.3.1 CCTextureCache 216
15.3.2 CCSpriteFrameCache 217
15.3.3 CCAnimationCache 217
15.4 对象池机制:可回收与重复使用 218
15.5 对象池实现 218
15.6 落实到工厂方法 221
15.7 一个简单的性能测试 222
15.8 使用时机 223
15.9 小结 224
第16章 并发编程 225
16.1 单线程的尴尬 225
16.2 pthread 225
16.3 线程安全 226
16.4 线程间任务安排 227
16.5 并发编程辅助 228
16.6 小结 233
第四部分 多平台
第17章 多平台下的Cocos2d 236
17.1 Windows 8 236
17.2 Windows Phone平台 237
17.3 Cocos2d-HTML5 237
17.4 移植 238
17.5 小结 238
第18章 可视化开发 239
18.1 CocosBuilder可视化开发 239
18.2 使用CocosBuilder创建场景 239
18.3 在Cocos2d-x项目中使用场景 241
18.4 小结 242
第19章 Cocos2d-HTML5 243
19.1 概述 243
19.2 开发流程 244
19.2.1 开发环境介绍 245
19.2.2 搭建开发环境 245
19.2.3 开始开发 249
19.3 代码安全 255
19.4 小结 257
第20章 移植 258
20.1 命名原则 258
20.1.1 类名称 258
20.1.2 类函数 259
20.1.3 属性 259
20.1.4 选择器 260
20.1.5 全局变量、函数与宏 260
20.2 跨语言移植 262
20.2.1 第一阶段:代码移植 262
20.2.2 第二阶段:消除平台差异 265
20.2.3 第三阶段:优化 268
20.3 小结 269
第五部分 实战篇
第21章 实战演练——开发自己的《捕鱼达人》 272
21.1 开发前的准备 273
21.1.1 视图 273
21.1.2 模型 274
21.1.3 控制器 275
21.2 开始开发 275
21.2.1 第一轮迭代 275
21.2.2 第二轮迭代 289
21.2.3 第三轮迭代 293
附录A 把游戏部署到Android平台 299