第1章 准备开始 1
1.1 使用实例代码 1
1.2 图示的约定 1
1.2.1 图中的箭头 1
1.2.2 图中的手势 2
1.2.3 图中的圈框 2
1.2.4 类图 2
第2章 Lua语言基础 4
2.1 Lua开发环境搭建 4
2.1.1 安装LDT工具 4
2.1.2 HelloLua实例测试 8
2.2 标识符和保留字 12
2.2.1 标识符 13
2.2.2 保留字 13
2.3 常量和变量 13
2.3.1 常量 13
2.3.2 变量 14
2.3.3 命名规范 14
2.4 注释 15
2.5 Lua数据类型 16
2.5.1 数据类型 16
2.5.2 type函数 17
2.5.3 数据类型转换 17
2.6 运算符 18
2.6.1 算术运算符 18
2.6.2 关系运算符 20
2.6.3 逻辑运算符 21
2.6.4 运算优先级 22
2.7 控制语句 22
2.7.1 分支语句 22
2.7.2 循环语句 24
2.7.3 跳转语句 27
2.8 table类型 27
2.8.1 字典 28
2.8.2 数组 29
2.9 字符串类型 30
2.9.1 字符串截取 30
2.9.2 字符串转换 31
2.9.3 字符串查询 31
2.9.4 字符串格式化 32
2.10 函数 33
2.10.1 使用函数 33
2.10.2 变量作用域 34
2.10.3 多重返回值 34
2.11 闭包函数 35
2.11.1 嵌套函数 35
2.11.2 返回函数 36
2.11.3 使用闭包表达式 37
2.12 Lua中的面向对象 38
2.12.1 Lua中的对象 38
2.12.2 类的实现 39
本章小结 40
第3章 Cocos2d-x Lua API开发环境搭建 41
3.1 搭建环境 41
3.1.1 Cocos引擎下载安装 41
3.1.2 Cocos Framework下载和安装 41
3.2 Cocos Code IDE开发工具 44
3.2.1 安装Cocos Code IDE 44
3.2.2 配置Cocos Code IDE 46
3.2.3 使用Cocos Code IDE调试功能 48
本章小结 51
第4章 Cocos2d-x引擎与Lua绑定 52
4.1 Cocos2d家谱 52
4.1.1 Cocos2d-x引擎 53
4.1.2 Cocos2d-x绑定Lua 54
4.2 第一个Cocos2d-x Lua绑定游戏 54
4.2.1 创建工程 54
4.2.2 Cocos Code IDE中运行 57
4.2.3 工程文件结构 57
4.2.4 重构HelloLua案例 58
4.3 Cocos2d-x核心概念 60
4.3.1 导演 60
4.3.2 场景 61
4.3.3 层 61
4.4 Node与Node层级架构 62
4.4.1 Node中重要的操作 63
4.4.2 Node中重要的属性 64
4.4.3 游戏循环与调度 67
4.5 Cocos2d-x坐标系 68
4.5.1 UI坐标 68
4.5.2 OpenGL坐标 69
4.5.3 世界坐标和模型坐标 70
本章小结 74
第5章 游戏中的文字 75
5.1 使用标签 75
5.1.1 Label类 76
5.1.2 Label类实例 77
5.2 位图字体制作 79
5.2.1 Glyph Designer工具 80
5.2.2 使用Glyph Designer制作位图字体 80
本章小结 84
第6章 菜单 85
6.1 菜单相关类 85
6.2 文本菜单 86
6.3 精灵菜单和图片菜单 87
6.4 开关菜单 91
本章小结 93
第7章 精灵 94
7.1 Sprite精灵类 94
7.1.1 创建Sprite精灵对象 94
7.1.2 实例:使用纹理对象创建Sprite对象 95
7.2 精灵的性能优化 97
7.2.1 使用纹理图集 97
7.2.2 使用精灵帧缓存 100
7.3 纹理图集制作 102
7.3.1 TexturePacker工具 102
7.3.2 使用TexturePacker制作纹理图集 104
本章小结 107
第8章 场景与层 108
8.1 场景与层的关系 108
8.2 场景切换 108
8.2.1 场景切换相关函数 108
8.2.2 场景过渡动画 113
8.3 场景的生命周期 114
8.3.1 生命周期函数 114
8.3.2 多场景切换生命周期 117
本章小结 118
第9章 动作和动画 119
9.1 动作 119
9.1.1 瞬时动作 120
9.1.2 间隔动作 124
9.1.3 组合动作 129
9.1.4 动作速度控制 133
9.1.5 函数调用 136
9.2 特效 138
9.2.1 网格动作 139
9.2.2 实例:特效演示 140
9.3 动画 142
9.3.1 帧动画 142
9.3.2 实例:帧动画使用 143
本章小结 145
第10章 用户事件 146
10.1 事件处理机制 146
10.1.1 事件分发器 147
10.1.2 触摸事件 148
10.1.3 实例:单点触摸事件 150
10.1.4 实例:多点触摸事件 153
10.1.5 键盘事件 156
10.2 加速度计与加速度计事件 157
10.2.1 加速度计 157
10.2.2 加速度计事件 158
10.2.3 实例:运动的小球 159
本章小结 160
第11章 AudioEngine音频引擎 161
11.1 Cocos2d-x中音频文件 161
11.1.1 音频文件介绍 161
11.1.2 Cocos2d-x跨平台音频支持 162
11.2 使用AudioEngine引擎 163
11.2.1 音频文件的预处理 163
11.2.2 播放背景音乐 164
11.2.3 停止播放背景音乐 166
11.3 实例:设置背景音乐与音效 168
11.3.1 GameScene场景实现 168
11.3.2 SettingScene场景实现 171
本章小结 173
第12章 粒子系统 174
12.1 问题的提出 174
12.2 粒子系统基本概念 175
12.2.1 实例:打火机 175
12.2.2 粒子发射模式 177
12.2.3 粒子系统属性 177
12.3 Cocos2d-x内置粒子系统 180
12.3.1 内置粒子系统 180
12.3.2 实例:内置粒子系统 180
12.4 自定义粒子系统 183
12.4.1 代码创建 183
12.4.2 plist文件创建 186
本章小结 189
第13章 瓦片地图 190
13.1 地图性能问题 190
13.2 Cocos2d-x Lua中瓦片地图API 191
13.3 使用Tiled地图编辑器 193
13.3.1 新建地图 197
13.3.2 导入瓦片集 199
13.3.3 创建层 200
13.3.4 在普通层上绘制地图 201
13.3.5 在对象层上添加对象 204
13.4 实例:忍者无敌 206
13.4.1 设计地图 207
13.4.2 程序中加载地图 208
13.4.3 移动精灵 209
13.4.4 检测碰撞 211
13.4.5 滚动地图 215
本章小结 218
第14章 物理引擎 219
14.1 使用物理引擎 220
14.1.1 物理引擎核心概念 220
14.1.2 物理引擎与精灵关系 221
14.2 Cocos2d-x中物理引擎 221
14.2.1 Cocos2d-x物理引擎Lua API 221
14.2.2 实例:HelloPhysicsWorld 225
14.2.3 实例:接触与碰撞检测 228
14.2.4 实例:使用关节 232
本章小结 233
第15章 多分辨率屏幕适配 234
15.1 屏幕适配问题的提出 234
15.2 Cocos2d-x屏幕适配 235
15.2.1 三种分辨率 235
15.2.2 分辨率适配策略 238
15.2.3 纹理图集资源适配 241
15.2.4 瓦片地图资源适配 242
本章小结 242
第16章 敏捷开发项目实战——迷失航线手机游戏 243
16.1 迷失航线游戏分析与设计 243
16.1.1 迷失航线故事背景 243
16.1.2 需求分析 243
16.1.3 原型设计 244
16.1.4 游戏脚本 245
16.2 任务1:游戏工程的创建与初始化 246
16.2.1 迭代1.1:创建工程 246
16.2.2 迭代1.2:添加资源文件 247
16.2.3 迭代1.3:添加常量文件SystemConst.lua 248
16.2.4 迭代1.4:多分辨率支持 251
16.3 任务2:创建Loading场景 253
16.3.1 迭代2.1:添加场景和层 253
16.3.2 迭代2.2: Loading动画 255
16.3.3 迭代2.3:异步加载纹理缓存 256
16.4 任务3:创建Home场景 257
16.4.1 迭代3.1:添加场景和层 257
16.4.2 迭代3.2:添加菜单 259
16.5 任务4:创建设置场景 260
16.6 任务5:创建帮助场景 262
16.7 任务6:游戏场景实现 263
16.7.1 迭代6.1:创建敌人精灵 263
16.7.2 迭代6.2:创建玩家飞机精灵 269
16.7.3 迭代6.3:创建炮弹精灵 271
16.7.4 迭代6.4:初始化游戏场景 272
16.7.5 迭代6.5:游戏场景菜单实现 277
16.7.6 迭代6.6:玩家飞机发射炮弹 280
16.7.7 迭代6.7:炮弹与敌人的接触检测 281
16.7.8 迭代6.8:玩家飞机与敌人的接触检测 285
16.7.9 迭代6.9:玩家飞机生命值显示 287
16.7.10 迭代6.10:显示玩家得分情况 288
16.8 任务7:游戏结束场景 288
本章小结 291