第一部分 基础篇 2
第1章 Cocos2d-JS介绍 2
1.1 Cocos2d引擎家族 2
1.1.1 Cocos2d的诞生 3
1.1.2 Cocos引擎家族大事记 4
1.2 Cocos2d-JS介绍 5
1.3 引擎目录结构 6
1.4 小结 7
1.5 参考资源 7
第2章 Hello World 8
2.1 Cocos Console 8
2.1.1 安装Python 8
2.1.2 Android环境配置 10
2.2 创建、编译和运行工程 12
2.3 HelloWorld的目录结构 13
2.4 项目在Web和Native上的启动流程 16
2.5 项目在各平台下的打包以及部署 18
2.6 js-tests测试工程 22
2.7 为《保卫萝卜2》项目做准备 23
2.8 实例——利用Cocos DevTools学习Cocos2d-JS 27
2.9 小结 29
2.10 参考资源 29
第3章 核心框架 30
3.1 导演 30
3.1.1 设置帧率 31
3.1.2 初始化管理器 31
3.1.3 初始化渲染器 32
3.1.4 获取屏幕大小 32
3.1.5 执行游戏主循环 32
3.2 Cocos2d-JS坐标系 33
3.3 节点 34
3.3.1 基础属性 35
3.3.2 图形属性 39
3.3.3 其他属性 41
3.3.4 常用函数 43
3.4 场景 47
3.4.1 再探导演——场景管理 47
3.4.2 切换特效 48
3.4.3 场景的生命周期 49
3.5 层 50
3.6 精灵 52
3.6.1 通过图片资源创建 52
3.6.2 通过纹理创建 52
3.6.3 通过精灵表单创建 53
3.6.4 创建带有颜色的精灵 53
3.7 场景树 54
3.8 标签 54
3.8.1 CC.LabelTTF字体标签 54
3.8.2 CC.LabelBMFont位图标签 56
3.8.3 CC.LabelAtlas字符映射标签 57
3.8.4 使用编辑器制作FNT字体 58
3.9 实例——《保卫萝卜2》主页面开发 61
3.9.1 主页面设计思路 62
3.9.2 视图设定 63
3.9.3 代码文件架构 63
3.9.4 主页面BackgroundLayer开发 64
3.9.5 主页面MainLayer开发 65
3.10 小结 66
3.11 参考资源 66
第4章 动作模块 67
4.1 CC.Action 67
4.2 瞬时动作 68
4.2.1 CC.place 69
4.2.2 CC.FlipX和CC.FlipY 69
4.2.3 CC.Show和CC.Hide 69
4.2.4 CC.ToggleVisibility 69
4.2.5 CC.RemoveSelf 69
4.2.6 CC.CallFun 70
4.3 持续动作 70
4.3.1 属性变化动作 71
4.3.2 视觉特效动作 73
4.3.3 复合动作 75
4.4 变速动作 76
4.4.1 CC.Speed 76
4.4.2 CC.ActionEase 77
4.5 实例——让《保卫萝卜2》的主界面动起来 79
4.6 小结 81
4.7 参考资源 81
第5章 事件机制 82
5.1 事件 82
5.2 事件管理器 83
5.2.1 添加事件监听器 83
5.2.2 删除事件监听器 84
5.2.3 设置事件监听器的优先级 84
5.2.4 分发事件 85
5.3 触摸事件 85
5.3.1 单点触摸 85
5.3.2 多点触摸 87
5.4 加速计事件 88
5.5 键盘事件 89
5.6 鼠标事件 90
5.7 自定义事件 91
5.8 实例——虚拟摇杆封装 92
5.9 小结 99
5.10 参考资源 99
第6章 音频处理 100
6.1 Cocos2d-JS中的音频 100
6.1.1 CC.audioEngine的常用API 100
6.1.2 各平台下支持的音频格式 101
6.2 背景音乐何时播放 102
6.3 实例——给《保卫萝卜2》添加音频 104
6.4 小结 104
6.5 参考资源 105
第7章 屏幕适配 106
7.1 屏幕适配原理 106
7.2 如何使用适配模式 108
7.3 系统预设适配模式 110
7.3.1 CC.ResolutionPolicy. SHOW_ALL 110
7.3.2 CC.ResolutionPolicy.NO_BORDER 110
7.3.3 CC.ResolutionPolicy. EXACT_FIT 111
7.3.4 CC.ResolutionPolicy.FIXED_HEIGHT 112
7.3.5 CC.ResolutionPolicy. FIXED_WIDTH 113
7.4 推荐的适配方案 113
7.5 小结 115
7.6 参考资源 116
第二部分 进阶篇 118
第8章 数据存储 118
8.1 CC.sys.localstorage 118
8.2 JSON文件读取 119
8.3 plist文件读取 120
8.4 SQLite实现 121
8.5 实例——解锁《保卫萝卜2》的“天天向上”玩法 121
8.6 小结 126
8.7 参考资源 126
第9章 粒子系统 127
9.1 粒子系统概述 127
9.2 Cocos2d-JS中的粒子系统 128
9.3 ParticleDesigner编辑器 133
9.4 ParticleEditor编辑器 135
9.5 在Cocos2d-JS中使用粒子系统 136
9.6 小结 137
9.7 参考资源 137
第10章 UI控件 138
10.1 ccui.widget父类 138
10.2 ccui.Text文本 141
10.2.1 ccui.Text字体文本 142
10.2.2 ccui.TextBMFont位图文本 143
10.2.3 ccui.TextAtlas字符映射文本 144
10.3 ccui.Button按钮 144
10.4 ccui.CheckBox复选框 147
10.5 ccui.Slider滑块 149
10.6 ccui.ImageView图片视图 150
10.7 ccui.LoadingBar加载条 151
10.8 ccui.TextField编辑框 152
10.9 ccui.Layout布局 154
10.10 ccui.ScrollView滚动视图 158
10.11 ccui.PageView分页视图 161
10.12 ccui.ListView列表视图 163
10.13 实例——《保卫萝卜2》关卡选择页面的开发 166
10.14 小结 170
10.15 参考资源 170
第11章 性能优化 171
11.1 对象缓冲池 171
11.1.1 让我们的类支持cc.pool管理 172
11.1.2 使用cc.pool管理对象 173
11.2 批量渲染 174
11.2.1 Cocos2d-JS中的SpriteBatchNode类 175
11.2.2 使用SpriteBatchNode 176
11.3 烘培层 177
11.4 SpriteSheet资源优化 178
11.4.1 图片内存计算 178
11.4.2 TexturePacker 179
11.4.3 图片资源压缩 182
11.5 小结 183
第12章 游戏地图 184
12.1 瓦片地图原理 184
12.2 Tiled Map Editor简介 185
12.3 Tiled Map Editor工作区介绍 186
12.3.1 工具栏 186
12.3.2 地图编辑区 186
12.3.3 迷你地图、对象、图层区 187
12.3.4 图块、地形区 188
12.3.5 Cocos2d-JS支持的地图类型 188
12.3.6 瓦片地图坐标系 189
12.4 使用Tiled Map Editor制作一个地图 189
12.4.1 新建地图 190
12.4.2 新建图块 190
12.4.3 新建层 191
12.4.4 编辑地图 191
12.5 在Cocos2d-JS中使用瓦片地图 193
12.5.1 cc.TMXTiledMap地图对象 193
12.5.2 cc.TMXLayer图层对象 195
12.5.3 cc.TMXObj ectGroup对象组 197
12.6 小结 198
12.7 参考资源 198
第三部分 高级篇 200
第13章 反射调用 200
13.1 反射调用概述 200
13.2 反射调用Objective-C 201
13.3 反射调用Java 201
13.4 小结 203
13.5 参考资源 203
第14章 Chipmunk物理引擎 204
14.1 物理概念 204
14.1.1 刚体 204
14.1.2 面积 205
14.1.3 质量 205
14.1.4 密度 205
14.1.5 转动惯量 205
14.1.6 弹性系数 205
14.1.7 摩擦系数 205
14.2 Chipmunk中的基本概念 206
14.2.1 基本类型 206
14.2.2 Chipmunk的坐标系统 206
14.2.3 Chipmunk中的基本数据结构 206
14.3 刚体 208
14.3.1 动态刚体 210
14.3.2 静态刚体 213
14.4 形状 214
14.4.1 基类cp.shape 214
14.4.2 圆形 216
14.4.3 线段 216
14.4.4 凸多边形 216
14.5 约束 217
14.5.1 基类cp.Constraint 217
14.5.2 Pin Joint 218
14.5.3 Slide Joint 218
14.5.4 Pivot Joint 218
14.5.5 Groove Joint 218
14.5.6 Damped Spring 219
14.5.7 DampedRotary Spring 219
14.5.8 Rotary Limit Joint 219
14.5.9 Ratchet Joint 219
14.5.10 Gear Joint 220
14.5.11 Simple Motor 220
14.6 空间 220
14.7 碰撞检测 222
14.7.1 空间索引 222
14.7.2 碰撞过滤 224
14.7.3 碰撞回调 225
14.7.4 碰撞对 228
14.8 查询 228
14.8.1 点查询 228
14.8.2 线段查询 229
14.8.3 区域查询 229
14.9 实例——拖动刚体的实现 230
14.10 小结 235
14.11 参考资源 235
第15章 网络编程 236
15.1 网络编程相关概念 236
15.2 TCP/IP参考模型 240
15.2.1 服务端 240
15.2.2 客户端 240
15.2.3 通信协议 241
15.2.4 端口 241
15.2.5 URI 241
15.3 基于HTTP协议的通信 242
15.3.1 运作方式 242
15.3.2 XMLHttpRequest对象 242
15.4 基于WebSocket的通信 246
15.4.1 Cocos2d-JS中的WebSocket 246
15.4.2 WebSocket对象常用的属性和方法 246
15.5 基于SocketIO的通信 249
15.5.1 获取SocketIO对象 249
15.5.2 SocketIO的常用方法 250
15.6 实例——使用Node.js+Socket.IO实现游戏聊天系统 250
15.6.1 Node.js、Express框架和Socket.IO库的安装 251
15.6.2 服务端开发 253
15.6.3 客户端开发 255
15.7 小结 258
15.8 参考资源 258
第16章 JavaSc ript Binding 259
16.1 Cocos引擎中的脚本绑定框架 260
16.2 自动绑定 261
16.2.1 自动绑定简介及其限制 262
16.2.2 配置绑定环境 262
16.3 深入探究绑定技术 264
16.3.1 函数注册 264
16.3.2 分析C++头文件 267
16.3.3 绑定规则 268
16.3.4 绑定模板 268
16.3.5 转换函数 269
16.4 绑定自己的C++类 270
16.4.1 编写要绑定的C++类 270
16.4.2 生成C++类的自动绑定代码 271
16.5 实例——绑定SQLite3 278
16.5.1 下载SQLite3源代码 278
16.5.2 创建HelloSqlite工程 278
16.5.3 生成绑定代码 278
16.5.4 注册绑定 279
16.5.5 集成到平台中 279
16.5.6 测试结果 280
16.6 小结 281
16.7 参考资源 282
第四部分 实战篇 284
第17章 《保卫萝卜2》实战 284
17.1 关卡选择场景开发 284
17.1.1 使用瓦片地图编辑器标记关卡按钮坐标 285
17.1.2 关卡之间的连线开发 288
17.1.3 关卡按钮特效节点开发 290
17.2 游戏管理对象GameManager的开发 290
17.2.1 关卡数值配置 291
17.2.2 GameManager编写 292
17.2.3 弹出下一组怪物数据 298
17.3 游戏玩法场景开发 299
17.3.1 GamePlayScene开发 300
17.3.2 背景层GPBackground-Layer开发 301
17.3.3 UI层GPUILayer开发 302
17.3.4 菜单层GPMenuLayer开发 303
17.3.5 游戏玩法层(GPMain-Layer) 304
17.4 小结 331