第1章Cocos2d-Lua 1
1.1概述 1
1.1.1 Cocos2d的起源 1
1.1.2 Cocos2d-x的诞生 1
1.1.3 Cocos2d-Lua的发展 3
1.2版本介绍 3
1.2.1 Cocos2d-x版本介绍(C+++) 3
1.2.2 Cocos2d-Lua版本介绍 4
第2章Lua编程 5
2.1 Lua在Windows下的运行环境搭建 5
2.1.1安装 5
2.1.2运行 5
2.2 Lua基础 7
2.2.1 Lua介绍 7
2.2.2 Lua语法 8
2.3 Lua进阶 18
2.3.1 Metatable(元表) 18
2.3.2重要元方法介绍 20
2.3.3封装 21
2.3.4继承 22
2.3.5多态 22
第3章Cocos2d-Lua基础 23
3.1 Cocos2d-Lua开发环境配置 23
3.1.1安装Cocos2d-Lua 23
3.1.2安装Sublime与QuickXDev 24
3.1.3测试开发环境 28
3.2引擎架构与目录结构 29
3.2.1引擎架构 29
3.2.2引擎文件结构 30
3.2.3项目文件结构 32
3.3 MVC框架 33
3.3.1什么是MVC 33
3.3.2 Cocos2d-Lua中的类实现 34
3.3.3 Cocos2d-Lua的MVC实现 38
3.4基础概念 40
3.4.1导演 40
3.4.2节点 41
3.4.3场景 42
3.4.4层 43
3.4.5精灵 43
3.5坐标系 44
3.5.1笛卡儿坐标系 45
3.5.2屏幕坐标系和Cocos2d-Lua坐标系 45
3.5.3世界坐标系VS本地坐标系 45
3.5.4锚点 46
3.5.5忽略锚点 48
3.5.6 ZOrder与渲染顺序 48
3.6文本标签 50
3.6.1 TTF文本标签 50
3.6.2 BMFont文本标签 51
3.6.3 UILabel控件 52
3.6.4 Mac下使用GlyphDesigner制作字体 53
3.6.5 Windows下使用BMFont制作字体 54
3.7按钮 55
3.7.1 UIButton按钮 56
3.7.2 UIPushButton按钮 56
3.7.3 UICheckBoxButton按钮 58
3.7.4 UICheckBoxButtonGroup按钮 59
3.8场景转换 61
3.8.1概念 61
3.8.2带转场特效的场景 61
3.8.3场景转换示例 63
3.9动作 64
3.9.1瞬时动作 64
3.9.2有限时间动作 65
3.9.3复合动作 67
3.9.4变速动作 69
3.9.5节点与动作相关的接口 70
3.10序列帧动画 71
3.10.1精灵表单 72
3.10.2播放序列帧动画 73
3.10.3动画缓存 75
3.11调度器 76
3.11.1全局调度器 76
3.11.2节点调度器 78
3.12事件分发机制 78
3.12.1节点事件 79
3.12.2帧事件 80
3.12.3键盘事件 81
3.12.4加速计事件 82
3.12.5触摸事件 82
3.13多分辨率适配 86
3.13.1 Cocos2d-x中的多分辨率适配 86
3.13.2 Cocos2d-Lua中的多分辨率适配 92
第4章 消除游戏实战(一) 94
4.1 Fruit Fest(1):主场景 94
4.1.1游戏玩法 94
4.1.2美术设计 94
4.1.3分辨率适配策略 95
4.1.4主场景 96
4.2 Fruit Fest(2):创建PlayScene 97
4.2.1准备BMFont 97
4.2.2创建PlayScene 97
4.2.3添加转场代码 98
4.2.4添加UI 98
4.3 Fruit Fest(3):初始化水果矩阵 99
4.3.1水果类 100
4.3.2矩阵算法 102
4.3.3掉落算法 102
4.3.4矩阵初始化的代码实现 103
4.4 Fruit Fest(4):选中水果 105
4.4.1绑定触摸事件 106
4.4.2清除已高亮区域 106
4.4.3高亮算法 107
4.4.4分数算法 108
4.5 Fruit Fest(5):消除与掉落 109
4.5.1消除高亮水果 110
4.5.2掉落与补全 111
第5章Cocos2d-Lua进阶 113
5.1 UI控件 113
5.1.1输入控件 113
5.1.2进度条控件 115
5.1.3滑动条控件 116
5.1.4滚动视图控件 119
5.1.5列表视图控件 121
5.1.6分页视图控件 125
5.2瓦片地图 127
5.2.1用Tiled制作瓦片地图 128
5.2.2地图视角 130
5.2.3在Cocos2d-Lua中使用TMX 131
5.3精灵批处理 132
5.3.1手动批处理 132
5.3.2自动批处理 133
5.3.3手动批处理VS自动批处理 135
5.4碰撞检测 135
5.4.1点与点的碰撞 135
5.4.2点与矩形的碰撞 135
5.4.3圆与圆之间的碰撞 136
5.4.4轴对齐矩形之间的碰撞 137
5.4.5非轴对齐矩形之间的碰撞 137
5.5内存管理 138
5.5.1 Lua内存管理 138
5.5.2 Cocos2d-Lua内存管理 139
5.5.3纹理缓存 141
5.5.4精灵帧缓存 144
5.6数据与存储 145
5.6.1 JSON数据 145
5.6.2 crypto数据编码 146
5.6.3 UserDefault数据存储 148
5.6.4 GameState数据存储 149
5.6.5文件读写 151
5.7背景音乐与音效 152
5.8粒子系统 154
5.8.1什么是粒子系统 154
5.8.2 Cocos2d-Lua中的粒子系统 154
5.8.3粒子系统批处理节点 155
5.8.4粒子属性 156
5.8.5粒子编辑器介绍 158
5.8.6使用粒子系统 161
5.9 Spine骨骼动画 163
5.9.1 Spine运行库 164
5.9.2用法示例 166
5.10裁剪节点 167
5.11渲染纹理 169
第6章 消除游戏实战(二) 172
6.1 Fruit Fest(6):过关与信息存储 172
6.1.1添加进度条 172
6.1.2过关与数据持久化 173
6.2 Fruit Fest(7):爆炸特效与声音 175
6.2.1爆炸特效 175
6.2.2游戏音乐 176
6.2.3后记 178
第7章Cocos2d-Lua高级 179
7.1网络通信 179
7.1.1 network 179
7.1.2 SocketTCP 182
7.1.3 WebSocket 184
7.2物理引擎 187
7.2.1创建带物理世界的场景 188
7.2.2创建物理边界 188
7.2.3创建受重力作用的精灵 189
7.2.4碰撞检测 189
7.2.5完整示例 191
7.3摄像机 193
7.3.1 OpenGL视口 193
7.3.2 cc.Camera 194
7.3.3场景的默认摄像机 196
7.3.4自定义摄像机 197
7.4自定义事件 198
7.4.1加载EventProtocol组件 198
7.4.2主要接口 201
7.4.3完整示例 201
7.5有限状态机 203
7.5.1基本用法 203
7.5.2完整示例 205
7.6扩展Lua接口 208
7.6.1 Lua C API 208
7.6.2 Lua栈 209
7.6.3 Lua Binding实战(1): tolua+++手动绑定 210
7.6.4 Lua Binding实战(2):扩展Spine接口 217
7.7 OpenGL ES 2.0与shader编程 224
7.7.1 OpenGL ES概述 224
7.7.2 OpenGL ES绘制几何图形 227
7.7.3矩阵变换 235
7.7.4纹理贴图 239
7.7.5 Cocos2d-Lua中使用自定义 shader 248
第8章 打包与发布 254
8.1 Android项目的编译与打包 254
8.1.1安装JDK 254
8.1.2 Build Native 255
8.1.3 Android Studio打包 258
8.2 Mac下编译iOS版本 260
8.2.1先决条件 260
8.2.2 Debug真机调试 260
8.2.3 Release打包 262
8.3发布时加密Lua源文件 263
8.3.1 compile_scripts脚本 263
8.3.2去掉源代码引用 264
8.3.3修改Lua启动入口 265
8.4发布时加密图片资源文件 265
8.4.1 encrypt_res脚本 265
8.4.2资源加密示例 266
8.5 SDK接入 266
8.5.1使用luaj接入Android SDK 266
8.5.2使用luaoc接入iOS SDK 269