本书第1版是公认的最适合系统学习Cocos2D-X的著作,广受读者好评,是该领域的权威畅销书。第2版根据Cocos2D-X 3.x全面重写,不仅根据最新技术进行了升级,而且对知识点和案例也进行了大幅补充,还对原有内容和写作方式进行了优化。内容更加全面,更加系统地讲解了Cocos2D-X最新的功能特性、使用方法、技术要点、开发技巧、高级知识、最佳实践以及性能优化;实战性更强,不仅每个知识点都辅之以便于理解的小案例,而且通过精心设计的4款游戏案例完美呈现了Cocos2D-X游戏设计与开发的完整过程,极富启发性。更为重要的是,本书将游戏开发人员应该掌握的游戏开发思想也融入到了其中。
全书共20章,分为三个部分。基础篇(1~10章)首先系统介绍了Cocos2D-x的核心概念、主要功能,它在Windows、Andriod、iOS等平台下的安装、配置、交叉编译环境的搭建,以及它的调试和多语言混编;然后重点讲解了Cocos2D-x的功能特性、使用方法、技术要点,包括Cocos2D-x中的核心类、图片渲染类、动作、动画、特效、菜单项、文本渲染系统、事件处理机制、UI控件、瓷砖地图集、声音、存储、网络以及物理引擎等内容。高级篇(11~16章),介绍了Cocos2D-X中的脚本引擎、常用算法在Cocos2D-X中的实现、粒子系统、着色器的使用,以及CocoStudio等相关的编辑器等。实战篇(17~20章),通过4个案例全过程讲解了如何采用Cocos2D-X开发纵版设计游戏、横板动作游戏、物理类游戏和消除类游戏,旨在让读者深入了解Cocos2D-X的基础知识在游戏开发中的实战使用,而且4个案例不仅包含横板卷轴和纵版卷轴,还分别采用了C++,JavaScript和Lua三种不同的开发语言。可以让开发者深入了解不同类型的游戏开发思想以及Cocos2D-X涉及到的不同开发语言。
封面图
目录
- 前言
- 第一部分基础篇
- 第1章认识Cocos2D-X / 2
- 1.1什么是Cocos2D / 2
- 1.1.1Cocos2D的特点 / 2
- 1.1.2Cocos2D的主要功能 / 3
- 1.1.3Cocos2D的应用 / 5
- 1.2什么是Cocos2D-X / 6
- 1.2.1Cocos2D-X的特点 / 6
- 1.2.2Cocos2D-X的主要功能 / 6
- 1.2.3“百花齐放”的辅助工具链 / 7
- 1.2.4Cocos2D-X主导的3.0时代 / 8
- 1.2.5Cocos2D-X的应用 / 9
- 1.3Cocos2D-X与Cocos2D-iPhone的比较 / 10
- 1.4本章小结 / 12
- 第2章搭建跨平台的开发环境 / 13
- 2.1Cocos2D-X的安装和配置 / 13
- 2.1.1Cocos2D-X的运行编译环境 / 13
- 2.1.2需要安装或配置的工具 / 14
- 2.2Cocos2D-X代码集成调试工具Cocos Code IDE / 15
- 2.2.1安装和配置 / 15
- 2.2.2在Cocos Code IDE中调试代码 / 15
- 2.3搭建Windows开发环境 / 19
- 2.4搭建Android开发环境 / 20
- 2.4.1编译和运行 / 21
- 2.4.2Cocos2D-X的工程目录介绍 / 25
- 2.5搭建iOS开发环境 / 27
- 2.6Cocos2D-X调试 / 28
- 2.6.1Visual Studio的调试方法 / 28
- 2.6.2Eclipse的调试方法 / 28
- 2.6.3Xcode的调试方法 / 31
- 2.7多语言混编Cocos2D-X / 35
- 2.7.1在Cocos2D-X中调用Objective-C / 35
- 2.7.2在Cocos2D-X中调用Java / 36
- 2.8使用doxygen获得Cocos2D-X的最新文档 / 37
- 2.9启动文件和适配 / 39
- 2.10本章小结 / 41
- 第3章Cocos2D-X中的核心类 / 42
- 3.1坐标系简介 / 43
- 3.1.1OpenGL坐标系 / 43
- 3.1.2世界坐标系 / 43
- 3.1.3节点坐标系 / 44
- 3.1.4仿射变换 / 44
- 3.2Cocos2D-X渲染 / 45
- 3.2.1渲染树 / 45
- 3.2.2渲染原理 / 45
- 3.3节点类 / 46
- 3.3.1Node类的成员数据 / 47
- 3.3.2Node类的函数 / 48
- 3.3.3实战:通过节点控制屏幕中的全体渲染对象 / 51
- 3.4导演类 / 54
- 3.4.1Director类的成员数据 / 54
- 3.4.2Director类的函数 / 54
- 3.4.3实战:Director类的使用 / 56
- 3.5场景类 / 57
- 3.5.1如何新建一个场景 / 58
- 3.5.2场景的切换 / 59
- 3.5.3场景间切换的动画 / 61
- 3.6布景层类 / 63
- 3.6.1Layer类的函数 / 64
- 3.6.2颜色布景层类LayerColor / 65
- 3.6.3菜单类Menu / 68
- 3.7图形绘制类 / 70
- 3.8时间调度的使用 / 73
- 3.9Ref类和内存管理 / 73
- 3.10本章小结 / 74
- 第4章Cocos2D-X中的图片渲染类 / 75
- 4.1精灵类 / 75
- 4.1.1Sprite类的成员及函数 / 75
- 4.1.2贴图类Texture2D / 77
- 4.1.3精灵批处理类SpriteBatchNode / 77
- 4.1.4精灵帧类SpriteFrame / 79
- 4.1.5精灵帧缓存类SpriteFrameCache / 80
- 4.1.6九宫格精灵Scale9Sprite / 80
- 4.1.7实战:精灵类及其相关类的使用 / 81
- 4.2裁剪节点类 / 88
- 4.3图片异步加载 / 91
- 4.4Cocos2D-X中如何节约图片空间 / 92
- 4.4.1图片打包器TexturePacker / 92
- 4.4.2通过优化降低游戏尺寸的方法 / 95
- 4.5本章小结 / 96
- 第5章Cocos2D-X中的动作、特效与动画 / 97
- 5.1动作类 / 97
- 5.1.1Action类的主要成员数据和函数 / 97
- 5.1.2基本动作 / 98
- 5.1.3摄像机动作类 / 108
- 5.1.4基本样条动作 / 110
- 5.1.5缓冲动作 / 114
- 5.1.6组合动作 / 117
- 5.1.7跟随动作 / 118
- 5.1.8可调整速度动作 / 119
- 5.1.9动作延时 / 120
- 5.1.10改变动作执行对象 / 121
- 5.1.11函数回调动作 / 121
- 5.1.12过程动作 / 123
- 5.2动作管理类 / 125
- 5.2.1动作管理类的主要函数 / 126
- 5.2.2动作管理类的使用 / 126
- 5.3Cocos2D-X中的网格动作 / 127
- 5.3.1Cocos2D-X中的网格 / 127
- 5.3.2网格动作 / 127
- 5.3.3清除网格 / 129
- 5.4Cocos2D-X中的动画 / 130
- 5.4.1Cocos2D-X中与动画相关的类 / 130
- 5.4.2Cocos2D-X中的动画实例 / 131
- 5.4.3使用plist配置文件实现动画 / 133
- 5.4.4Flash动画的转换 / 135
- 5.5本章小结 / 137
- 第6章Cocos2D-X中的菜单项和文本渲染系统 / 138
- 6.1菜单项 / 138
- 6.1.1标签菜单项 / 138
- 6.1.2精灵菜单项 / 139
- 6.1.3触发器菜单项 / 140
- 6.1.4菜单项的使用 / 140
- 6.2文本渲染系统 / 141
- 6.2.1LableAtlas类 / 142
- 6.2.2LabelTTF类 / 143
- 6.2.3LabelBMFont类 / 147
- 6.2.4Label标签类 / 151
- 6.2.5FreeType字体库 / 152
- 6.2.6富文本类RichText / 153
- 6.3本章小结 / 154
- 第7章Cocos2D-X中的事件处理机制和UI控件 / 155
- 7.1Cocos2D-X中的事件处理机制 / 155
- 7.2Cocos2D-X中的触屏事件 / 156
- 7.2.1触点类Touch / 156
- 7.2.2单点触摸函数 / 157
- 7.2.3多点触摸函数 / 157
- 7.2.4加入单点触摸 / 158
- 7.2.5加入多点触摸 / 159
- 7.2.6实战:主角随手指移动 / 161
- 7.2.7实战:缩放 / 164
- 7.3Cocos2D-X中的加速度传感器事件 / 165
- 7.3.1Acceleration结构体 / 165
- 7.3.2实战:加速度传感器事件的使用 / 166
- 7.4Cocos2D-X中的按键事件 / 167
- 7.5UI控件 / 168
- 7.5.1按钮控件 / 169
- 7.5.2选择框 / 170
- 7.5.3滚动列表 / 171
- 7.5.4输入框 / 172
- 7.6本章小结 / 172
- 第8章Cocos2D-X中的瓦片地图集 / 173
- 8.1瓦片地图集及编辑器简介 / 173
- 8.1.1瓦片地图的种类及用途 / 173
- 8.1.2地图编辑器Tiled / 174
- 8.1.3用Tiled编辑地图 / 175
- 8.1.4设置地形 / 179
- 8.1.5添加对象层 / 180
- 8.2Cocos2D-X中和Tiled相关的类 / 181
- 8.2.1Tiled数据文件 / 181
- 8.2.2瓦片地图集类TMXTiledMap / 182
- 8.2.3地图层类TMXLayer / 183
- 8.2.4地图精灵组类TMXObjectGroup / 184
- 8.3Cocos2D-X中使用地图和地图相关类 / 184
- 8.3.1新建地图类并在地图中显示 / 184
- 8.3.2普通视角地图获得对应位置图素 / 185
- 8.3.345度角地图获得对应位置图素 / 187
- 8.3.4GID值的使用 / 188
- 8.3.5地图块属性的获得 / 189
- 8.3.6在地图中加入精灵 / 190
- 8.3.7精灵层的操作 / 192
- 8.4本章小结 / 193
- 第9章Cocos2D-X中的声音、存储和网络 / 194
- 9.1Cocos2D-X中的声音 / 194
- 9.1.1Cocos2D-X在不同平台下支持的声音 / 194
- 9.1.2SimpleAudioEngine类的常用函数 / 195
- 9.1.3实战:SimpleAudioEngine类的使用 / 196
- 9.2Cocos2D-X中的游戏存档 / 197
- 9.2.1UserDefault类的常用函数 / 197
- 9.2.2实战:UserDefault类的使用 / 198
- 9.3Cocos2D-X中的网络连接 / 200
- 9.3.1cURL基础知识 / 200
- 9.3.2HttpClient类 / 203
- 9.3.3Socket类 / 204
- 9.4本章小结 / 205
- 第10章Cocos2D-X中的物理引擎 / 206
- 10.1物理引擎 / 206
- 10.1.1物理引擎简介 / 206
- 10.1.2物理引擎的作用 / 206
- 10.1.3认识Box2D和Chipmunk / 207
- 10.2Cocos2D-X中的Box2D / 207
- 10.2.1Box2D中的重要概念 / 207
- 10.2.2Box2D的使用步骤 / 208
- 10.3Cocos2D-X中的Chipmunk / 213
- 10.4物理精灵类PhysicsSprite / 215
- 10.5本章小结 / 216
- 第二部分高级篇
- 第11章Cocos2D-X中的脚本语言——Lua / 218
- 11.1Lua基本介绍 / 218
- 11.1.1Lua的变量及内置类型 / 219
- 11.1.2Lua的操作符和控制结构 / 221
- 11.1.3Lua中的全局函数 / 222
- 11.1.4在Lua中实现面向对象 / 223
- 11.2Lua与Cocos2D-X的结合 / 225
- 11.2.1C++调用Lua / 225
- 11.2.2Lua调用C++ / 226
- 11.3Cocos2D-X的Lua相关框架 / 230
- 11.4本章小结 / 231
- 第12章Cocos2D-X中的脚本语言——JavaScript / 232
- 12.1认识HTML5 / 232
- 12.2JavaScript基本介绍 / 233
- 12.2.1JavaScript的变量和内置类型 / 234
- 12.2.2JavaScript的操作符和控制结构 / 236
- 12.2.3在JavaScript中实现面向对象 / 237
- 12.3搭建HTML5开发环境 / 238
- 12.4Cocos2D-JS的HTML5运行原理 / 240
- 12.5JavaScript与Cocos2D-X的结合 / 244
- 12.5.1C++调用JavaScript / 245
- 12.5.2JavaScript调用C++ / 246
- 12.6本章小结 / 248
- 第13章游戏中常用算法在Cocos2D-X中的实现 / 249
- 13.1A星算法 / 249
- 13.1.1启发式搜索算法原理 / 249
- 13.1.2什么是A星搜索 / 250
- 13.1.3A星算法在Cocos2D-X中的实现 / 251
- 13.2碰撞检测算法 / 263
- 13.2.1碰撞检测的基本思想 / 264
- 13.2.2碰撞检测在Cocos2D-X中的实现 / 265
- 13.3本章小结 / 271
- 第14章粒子系统 / 272
- 14.1什么是粒子系统 / 272
- 14.1.1粒子系统的特点 / 273
- 14.1.2粒子系统的构成 / 273
- 14.2Cocos2D-X中的粒子系统 / 273
- 14.2.1粒子批处理类ParticleBatchNode / 274
- 14.2.2粒子系统基类ParticleSystem / 275
- 14.2.3粒子系统子类ParticleSystemQuad / 276
- 14.2.4ParticleSystem中的属性介绍 / 278
- 14.3在Cocos2D-X中使用粒子系统 / 279
- 14.3.1新建一个粒子系统ParticleSystemQuad类 / 279
- 14.3.2直接使用ParticleSystemQuad类的子类 / 281
- 14.3.3使用粒子编辑器创建粒子系统 / 282
- 14.3.4“清理”粒子系统 / 283
- 14.4支持Cocos2D-X的粒子编辑器 / 283
- 14.4.1Windows粒子编辑器Cocos2d Particle Editor / 283
- 14.4.2粒子编辑器Particle Designer / 287
- 14.4.3粒子编辑器V-Play / 293
- 14.5实战:使用编辑器设计下雨效果 / 294
- 14.6本章小结 / 296
- 第15章Cocos2D-X中的着色器 / 297
- 15.1什么是着色器语言 / 297
- 15.2着色器语言概览 / 297
- 15.2.1着色器语言的特点 / 298
- 15.2.2使用着色器可以为我们带来什么 / 300
- 15.2.3如何学习着色器语言 / 301
- 15.3在Cocos2D-X中使用shader / 303
- 15.3.1shader程序的编译执行流程 / 303
- 15.3.2shader执行者GLProgram类 / 303
- 15.3.3shader管理者ShaderCache类 / 304
- 15.3.4在Cocos2D-X中创建并使用shader / 305
- 15.4实战:图片灰化 / 306
- 15.5本章小结 / 308
- 第16章Cocos2D-X相关的编辑器 / 309
- 16.1CocosBuilder简介 / 309
- 16.1.1CocosBuilder菜单操作 / 309
- 16.1.2对象属性编辑 / 313
- 16.1.3CocosBuilder在Cocos2D-X中常用的相关类 / 318
- 16.1.4实战:CocosBuilder应用 / 319
- 16.2CocoStudio简介 / 325
- 16.2.1数据编辑器 / 326
- 16.2.2场景编辑器 / 327
- 16.2.3界面编辑器 / 329
- 16.2.4动画编辑器 / 331
- 16.3本章小结 / 332
- 第三部分实战篇
- 第17章纵版射击游戏:喵星战争 / 334
- 17.1纵版射击游戏的特点 / 334
- 17.2喵星战争简介 / 334
- 17.3主游戏模块组成元素的实现 / 336
- 17.3.1主角小猫的实现 / 336
- 17.3.2敌人狗博士的实现 / 340
- 17.3.3鱼骨子弹的实现 / 343
- 17.3.4试管子弹的实现 / 345
- 17.3.5游戏分数的实现 / 345
- 17.4喵星战争的实现 / 347
- 17.4.1游戏主模块的实现 / 347
- 17.4.2游戏主菜单的实现 / 352
- 17.4.3关于界面实现 / 355
- 17.5本章小结 / 357
- 第18章横版动作游戏:萝莉快跑 / 358
- 18.1横版动作游戏的特点 / 358
- 18.2萝莉快跑简介 / 359
- 18.3主游戏模块组成元素的实现 / 361
- 18.3.1主角萝莉的实现 / 361
- 18.3.2星星的实现 / 366
- 18.3.3地图的实现 / 367
- 18.4萝莉快跑的实现 / 373
- 18.4.1游戏主模块的实现 / 373
- 18.4.2游戏主菜单的实现 / 376
- 18.4.3关于界面的实现 / 378
- 18.5本章小结 / 379
- 第19章物理体育游戏:迷你世界杯 / 380
- 19.1物理游戏的特点 / 380
- 19.2迷你世界杯简介 / 380
- 19.3迷你世界杯的实现 / 384
- 19.3.1主角的实现 / 384
- 19.3.2游戏主模块的实现 / 387
- 19.3.3游戏主菜单的实现 / 393
- 19.3.4关于界面的实现 / 396
- 19.4本章小结 / 397
- 第20章消除游戏:天天消豆豆 / 398
- 20.1消除游戏的特点 / 398
- 20.2天天消豆豆简介 / 398
- 20.3天天消豆豆的实现 / 399
- 20.3.1Lua游戏框架实现 / 399
- 20.3.2开始界面模块的实现 / 402
- 20.3.3游戏主逻辑的实现 / 405
- 20.4本章小结 / 415
- 附录Cocos2D-X中常见的宏 / 416