Cocos2D-x权威指南.pdf

Cocos2D-x权威指南.pdf
 

书籍描述

编辑推荐
《Cocos2D-x权威指南》是资深游戏开发工程师根据Cocos2D-x的2.0.1版本撰写,内容全面,系统讲解了Cocos2D-x的功能特性、使用方法、技术要点、开发技巧、最佳实践以及性能优化,同时融入了游戏开发的思想;实战性强,每个知识点辅之以便于理解的小案例,而且通过精心设计的两款游戏案例完美呈现了Cocos2D-x游戏设计与开发的完整过程,极富启发性。

作者简介
满硕泉(bill man),资深手机游戏开发工程师和移动应用开发工程师,在Android和iOS两个平台上开发了多款游戏,对Cocos2D-x和Unity3D等游戏引擎有非常深入的研究,积累了丰富的经验。精通C++、Java、.NET和JavaScript相关的技术,近期关注HTML 5。活跃于CSDN和Cocos2D等技术社区,撰写了大量关于Cocos2D-x的文章,深受广大网友好评。

目录
前言
第一部分 准备篇
第1章 认识Cocos2D-x 2
1.1 什么是Cocos2D 2
1.1.1 Cocos2D的特点 2
1.1.2 Cocos2D的主要功能 3
1.1.3 Cocos2D的应用 5
1.2 什么是Cocos2D-x 6
1.2.1 Cocos2D-x的特点 6
1.2.2 Cocos2D-x的主要功能 6
1.2.3 Cocos2D-x的应用 7
1.3 Cocos2D-x与Cocos2D-iPhone的比较 8
1.4 本章小结 10
第2章 搭建跨平台的开发环境 11
2.1 Windows下的开发环境配置 11
2.1.1 Cocos2D-x软件安装与配置 11
2.1.2 Cocos2D-x工程目录介绍 13
2.1.3 新建项目及交叉编译 14
2.2 Android下的开发环境配置 16
2.2.1 Cocos2D-x软件安装与配置 17
2.2.2 Cocos2D-x工程目录介绍 23
2.2.3 新建项目及交叉编译 23
2.3 iOS下的开发环境配置 27
2.3.1 Cocos2D-x软件安装与配置 27
2.3.2 Cocos2D-x工程目录介绍 28
2.3.3 新建项目及交叉编译 29
2.4 使用Doxygen工具生成Cocos2D-x文档 31
2.5 本章小结 33

第二部分 基础篇
第3章 Cocos2D-x中的核心类 36
3.1 节点类 36
3.1.1 CCNode类的成员数据 37
3.1.2 CCNode类的函数 38
3.1.3 坐标系简介 41
3.1.4 实例:通过节点控制屏幕中的全体渲染对象 43
3.2 导演类 46
3.2.1 CCDirector类的成员数据 46
3.2.2 CCDirector类的函数 47
3.2.3 实例:CCDirector类的使用 48
3.3 场景类 50
3.3.1 如何新建一个场景 50
3.3.2 场景的切换 52
3.3.3 场景间切换的动画 54
3.4 布景层类 56
3.4.1 CCLayer类的函数 58
3.4.2 颜色布景层类CCLayerColor 59
3.4.3 多层布景层类CCLayerMultiplex 61
3.4.4 菜单类CCMenu 63
3.4.5 控件类及其子类 65
3.5 精灵类 69
3.5.1 CCSprite类的成员数据及函数 70
3.5.2 贴图类CCTexture2D 71
3.5.3 精灵批处理类CCSpriteBatchNode 72
3.5.4 精灵帧类CCSpriteFrame 73
3.5.5 精灵帧缓存类CCSpriteFrameCache 73
3.5.6 实例:精灵类及其相关类的使用 74
3.6 摄像机类 79
3.6.1 CCCamera类的成员数据 80
3.6.2 CCCamera类的函数 80
3.6.3 实例:CCCamera类的使用 80
3.7 容器类 81
3.7.1 CCMutableArray和CCArray 81
3.7.2 CCMutableDictionary和CCDictionary 83
3.8 拖动渐隐效果类CCMotionStreak 84
3.9 绘制图形 86
3.10 时间调度 88
3.11 本章小结 89
第4章 Cocos2D-x中的动作、特效与动画 90
4.1 动作类 90
4.1.1 CCAction类的主要成员数据和函数 90
4.1.2 基本动作 91
4.1.3 摄像机动作 102
4.1.4 基本样条动作 104
4.1.5 缓冲动作 108
4.1.6 组合动作 111
4.1.7 跟随动作 113
4.1.8 可调整速度动作 114
4.1.9 动作延时 116
4.1.10 改变动作执行对象 116
4.1.11 函数回调动作 117
4.1.12 过程动作 119
4.2 动作管理类 121
4.2.1 CCActionManager类的主要函数 122
4.2.2 CCActionManager类的使用 122
4.3 网格动作 123
4.3.1 Cocos2D-x中的网格 123
4.3.2 网格动作 124
4.3.3 清除网格 126
4.4 动画 126
4.4.1 Cocos2D-x中与动画相关的类 126
4.4.2 实例:Cocos2D-x中的动画 127
4.4.3 使用plist配置文件实现动画 130
4.5 本章小结 133
第5章 Cocos2D-x中的菜单项和文本渲染系统 134
5.1 菜单项 134
5.1.1 标签菜单项 134
5.1.2 精灵菜单项 135
5.1.3 触发器菜单项 135
5.1.4 实例:菜单项的使用 136
5.2 文本渲染类 138
5.2.1 CCLableAtlas类 139
5.2.2 CCLabelTTF类 140
5.2.3 CCLabelBMFont类 143
5.2.4 生成FNT配置文件的工具 144
5.3 本章小结 145
第6章 Cocos2D-x中的事件处理机制 146
6.1 触屏事件 146
6.1.1 触点类CCTouch 146
6.1.2 单/多点触摸函数 147
6.1.3 加入触摸事件 148
6.1.4 单点触摸实例:主角随手指移动 151
6.1.5 多点触摸实例:缩放功能的实现 154
6.2 加速度传感器事件 156
6.2.1 CCAccelerometerDelegate类的函数 156
6.2.2 实例:加速度传感器事件的使用 157
6.3 按键事件 159
6.3.1 CCKeypadDelegate类的函数 159
6.3.2 实例:按键事件的使用 159
6.4 获得用户虚拟键盘输入 161
6.4.1 CCIMEDelegate类的函数 161
6.4.2 CCTextFieldTTF类的函数 161
6.4.3 实例:获得用户输入 162
6.5 滚动列表类 163
6.5.1 CCListView类及其相关类的函数 163
6.5.2 实例:滚动列表类的使用 164
6.6 本章小结 167
第7章 Cocos2D-x中的瓦片地图集 168
7.1 瓦片地图集及编辑器 168
7.1.1 瓦片地图的种类及用途 168
7.1.2 Tiled地图编辑器 169
7.1.3 用Tiled地图编辑器编辑地图 170
7.1.4 添加精灵层 173
7.1.5 Tiled地图编辑器数据文件 173
7.1.6 瓦片地图集类CCTMXTiledMap 174
7.1.7 地图层类CCTMXLayer 175
7.1.8 地图精灵组类CCTMXObjectGroup 176
7.2 如何在Cocos2D-x中使用地图 176
7.2.1 新建地图类并在地图中显示 177
7.2.2 普通视角地图获得对应位置图素 178
7.2.3 45度角地图获得对应位置图素 179
7.2.4 GID值实例:种树 180
7.2.5 地图属性数据的使用 182
7.2.6 在地图中加入精灵 182
7.2.7 精灵层的使用 186
7.3 贴图地图类CCTileMapAtlas 188
7.4 本章小结 189
第8章 Cocos2D-x中的声音、存储和网络 190
8.1 声音 190
8.1.1 Cocos2D-x在不同平台下支持的声音 190
8.1.2 SimpleAudioEngine类的常用函数 191
8.1.3 实例:SimpleAudioEngine类的使用 191
8.2 游戏存档 194
8.2.1 CCUserDefault类的常用函数 195
8.2.2 实例:CCUserDefault类的使用 195
8.3 网络连接 197
8.3.1 cURL基础知识 198
8.3.2 libcurl基础知识 198
8.3.3 实例:cURL的使用 200
8.4 本章小结 200
第9章 可视化场景编辑器 202
9.1 CocosBuilder简介 202
9.2 CocosBuilder编辑器的使用 202
9.2.1 CocosBuilder菜单操作 202
9.2.2 对象属性编辑 206
9.3 CocosBuilder的使用 210
9.3.1 CocosBuilder在Cocos2D-x中使用的相关类 210
9.3.2 实例:CocosBuilder在Cocos2D-x中的使用 212
9.4 本章小结 218
第10章 Cocos2D-x中的物理引擎 219
10.1 物理引擎 219
10.1.1 什么是物理引擎 219
10.1.2 物理引擎的作用 219
10.1.3 Box2D和Chipmunk的对比 220
10.2 Box2D物理引擎 220
10.2.1 Box2D引擎中的重要概念 221
10.2.2 Box2D的使用步骤 221
10.2.3 在Cocos2D-x中使用Box2D 221
10.3 在Cocos2D-x中使用Chipmunk 229
10.4 本章小结 233

第三部分 实战篇
第11章 纵版射击游戏:喵星战争 236
11.1 纵版射击游戏的特点 236
11.2 喵星战争简介 237
11.2.1 喵星战争的游戏规则 237
11.2.2 喵星战争的游戏框架和界面 237
11.3 喵星战争主游戏模块组成元素的实现 239
11.3.1 主角小猫的实现 239
11.3.2 敌人狗博士的实现 244
11.3.3 鱼骨子弹的实现 247
11.3.4 试管子弹的实现 248
11.3.5 游戏分数的实现 248
11.4 游戏主模块的实现 251
11.5 游戏主菜单的实现 256
11.6 关于界面的实现 259
11.7 本章小结 260
第12章 横版动作游戏:萝莉快跑 261
12.1 横版动作游戏的特点 261
12.2 萝莉快跑简介 262
12.2.1 萝莉快跑的游戏规则 262
12.2.2 萝莉快跑的游戏框架和界面 262
12.3 萝莉快跑主游戏模块组成元素的实现 264
12.3.1 主角萝莉的实现 264
12.3.2 星星的实现 268
12.3.3 地图的实现 269
12.4 游戏主模块的实现 273
12.5 游戏主菜单的实现 277
12.6 关于界面的实现 279
12.7 本章小结 280
第四部分 高级篇
第13章 粒子系统 282
13.1 什么是粒子系统 282
13.1.1 粒子系统的特点 283
13.1.2 粒子系统的构成 283
13.2 Cocos2D-x中的粒子系统 283
13.2.1 粒子系统基类CCParticleSystem 285
13.2.2 放射式粒子系统CCParticleSystemQuad 285
13.3 在Cocos2D-x中使用粒子系统 287
13.3.1 新建一个粒子系统CCParticleSystemQuad类 287
13.3.2 直接使用CCParticleSystemQuad类的子类创建粒子系统 289
13.3.3 使用粒子编辑器创建粒子系统 290
13.3.4 “清理”粒子系统 291
13.4 支持Cocos2D-x的粒子编辑器 291
13.4.1 Windows粒子编辑器Cocos2d Particle Editor 292
13.4.2 粒子编辑器Particle Designer 296
13.5 本章小结 303
第14章 游戏中常用算法在Cocos2D-x中的实现 304
14.1 A星算法 304
14.1.1 启发式搜索算法原理 304
14.1.2 什么是A星搜索 305
14.1.3 A星算法在Cocos2D-x中的实现 306
14.2 碰撞检测 318
14.2.1 碰撞检测的基本思想 319
14.2.2 碰撞检测在Cocos2D-x中的实现 320
14.3 本章小结 326
第15章 内存管理与性能优化 327
15.1 Cocos2D-x中的内存管理 327
15.1.1 Cocos2D-x内存管理的原则 327
15.1.2 Cocos2D-x中的图片处理 328
15.2 Cocos2D-x对图片渲染的控制 330
15.2.1 CCRenderTexture的使用 330
15.2.2 Cocos2D-x中绘制方法的对比 332
15.3 Cocos2D-x中处理图片的方法 333
15.3.1 高清图片的处理 333
15.3.2 抗锯齿处理 334
15.3.3 Mipmap处理 335
15.3.4 获得贴图数和大小 337
15.4 多语言混编Cocos2D-x 337
15.4.1 Cocos2D-x中调用Objective-C 337
15.4.2 Cocos2D-x中调用Java 338
15.5 Cocos2D-x的调试 339
15.5.1 Visual Studio中的调试方法 339
15.5.2 Eclipse中的调试方法 339
15.5.3 Xcode中的调试方法 342
15.6 Android中画面的缩放问题 346
15.6.1 等比例缩放 346
15.6.2 非等比例缩放 346
15.7 本章小结 348
第16章 Cocos2D的分支Cocos2D-HTML5 349
16.1 认识HTML5 349
16.2 如何使用Cocos2D-HTML5 350
16.2.1 搭建Cocos2D-HTML5的开发环境 351
16.2.2 Cocos2D-HTML5 2.0版本的新特性 355
16.2.3 Cocos2D-HTML5的HelloWorld项目介绍 355
16.3 Cocos2D-x的未来 363
16.4 本章小结 363
附录 Cocos2D-x中常见的宏 365

序言
前言
为什么要写这本书
在大学期间,我开始对移动游戏开发感兴趣,于是开始学习移动开发方面的相关知识,包括J2ME和Android等技术。现在,开始的好奇心和兴趣成就了我引以为豪的事业。在大四的时候,我到了天津猛犸实习,从J2ME平台到Android平台,从Android平台到iOS平台,我不仅接触了不同平台的开发,更学会了游戏开发的技巧和思想。如果说编程是一门艺术,那么游戏开发就是艺术中的艺术。作为一名游戏开发程序员,不仅要拥有熟练的编程技巧,还要对美术、策划和游戏有深入的理解。游戏程序员最重要的是游戏编程思想,因此当决定写这本书的时候,我深知不仅要分享Cocos2D-x相关的知识,更要分享游戏开发思想。
作为从J2ME手机游戏时代走过来的开发者,我深知移动平台游戏可移植性的重要。J2ME这项技术的学习相对简单,应用这项技术进行开发的速度也比较快,而且当时几乎所有手机平台都支持Java,所以“一次编码,到处运行”也就不是梦想了。但是由于受机型的硬件性能所限,不同的平台在移植上也需要下一番工夫,针对不同屏幕、不同内存,往往需要开发不同的版本。当时的开发者根据经验,往往把很多种机型分组处理,为每组开发一个模板,然后再针对在不同机型上的运行情况做不同的调整,从而形成一种相对高效的开发模式。尽管在这个阶段手机设备的硬件水平普遍偏低,但是开发者经常可以通过美术、程序、策划三方的配合,开发出具有非常好的效果的游戏。由于J2ME的学习和开发都很简单,因此很少有成型的引擎,只是不同的游戏对应不同的框架。
随着苹果iOS系统和iPhone、iPad等一系列产品的发布,随着Android系统和相应设备的诞生,移动平台的种类得到了丰富,并从单一的手机发展到平板电脑等多种手持设备上。而移动游戏的开发方式同样也有了改变,开发者们开始尝试针对不同平台的开发框架来进行开发。智能平台的硬件及性能的提高并没有带来游戏品质的提高,于是开发者们也探索着进行只针对单一平台的开发,他们利用平台特性(多点触屏,重力感应等)开发出了很多不错的游戏。虽然Android平台的屏幕及分辨率也是千差万别,但是由于出色的框架使得开发和移植变得简单起来,同时也不需要过多考虑内存的限制。但是问题依然存在,对于不同的智能平台(Android、iOS等操作系统)依然需要编写不同的代码来进行开发,如何跨平台这个问题摆在了开发者面前。
跨平台的引擎有基于HTML5的跨平台特性产生的开发引擎,也有基于OpenGL开发的游戏引擎,其中Cocos2D-x广泛受到开发者的关注,因为它不仅具有跨平台的特点,还具有受Cocos2D全球社区的支持、框架简单易学、十分容易上手等特点。经过一段时间的发展,开发者使用Cocos2D-x开发出了多款成功的游戏,包括捕鱼达人、地铁总动员等佳作。2012年年初,Cocos2D-x团队再次开发出两个分支,分别是支持Windows Phone的XNA版和支持HTML5的HTML5版,后者还得到了Google的赞助。在Zynga的帮助下,Cocos2D-x正在研发绑定JavaScript的Cocos2D-x2.0版本。随着Cocos2D及其分支的发展,Cocos2D会有更多跨平台特性,从而可以支持更多的平台,并且提高开发者的开发效率。相信Cocos2D-x将会更加受到广大开发者的欢迎。
正因为这样,2011年年底我开始接触Cocos2D-x引擎,并在我的CSDN博客上(博客地址:http://blog.csdn.net/bill_man)写了一些相关的文章,当初的目的就是为自学留下些笔记以供以后参考,因为当时的Cocos2D-x参考资料还不是很多。后来逐渐发展为把我学习中遇到的问题与大家分享。慢慢地,通过使用,我发现Cocos2D-x是一个对开发者十分友好的游戏引擎,于是我希望把自己引擎的使用经验结合游戏开发经验更系统、更全面的分享出来,于是就有了这本书。
读者对象
Cocos2D-x初级及中级开发者,了解C++语言和游戏开发的读者;
没有接触过Cocos2D-x,但有过Cocos2D其他版本开发经验的开发者;
没有Cocos2D-x和C++开发经验,但是有C、Java等语言开发经验的游戏程序员;
相关项目的策划及管理人员;
游戏开发爱好者;
大专院校相关专业的师生。
如何阅读本书
本书分为四部分:
第一部分(第1~2章)为准备篇,介绍了Cocos2D-x的下载与安装,以及交叉编译环境的搭建,为后面的开发做准备。
第二部分(第3~10章)为基础篇,重点讲解了Cocos2D-x中的核心类、动作、动画、特效、文字、字体、事件处理、地图、声音以及物理引擎的使用,这部分结合Cocos2D-x自带的tests实例进行讲解,目的是让读者全面掌握Cocos2D-x的基础理论和基本使用。
第三部分(第11~12章)为实战篇,采用Cocos2D-x分别开发了一款纵版射击游戏和横版动作游戏,旨在让读者深入了解Cocos2D-x的基础知识在游戏开发中的实战使用,而且这两款游戏分别代表了纵版卷轴和横版卷轴,可以让开发者深入了解不同类型游戏的开发思想。
第四部分(第13~16章)为高级篇,在前面的章节基础上,介绍Cocos2D-x的粒子系统和相关粒子编辑器的使用,学习了Cocos2D-x实现常用的游戏算法、内存管理和调试方法,最后简单介绍了Cocos2D的一个新的分支—Cocos2D-HTML5。
如果你是一名对Cocos2D-x有一定了解的开发者,可以从第3章开始阅读,而如果你是一个Cocos2D-x的初学者,请从第1章开始阅读。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为了方便与大家交流,我专门申请了新浪微群,大家有问题可以在群中提出,我会及时解答的,我还会在群中及时更正书中的错误,我也会将相应的功能更新及时发布出来。书中的全部源文件可以从华章网站下载。如果你有更多的宝贵意见,也欢迎发送邮件,期待能够得到你们的真挚反馈。
致谢
首先感谢Cocos2D以及Cocos2D-x的开发团队,感谢他们为广大游戏开发者开发出一款如此优秀的游戏引擎。
感谢我的“老东家”天津猛犸科技有限公司,感谢这家公司对我的锻炼和栽培,使我对游戏开发由“好奇”变成“爱好”,感谢公司中我的老师和好战友们,感谢他们和我并肩作战的日子,我在他们身上学到的东西让我对游戏开发有了更深的认识和热爱。
感谢天津大学以及我的老师和同学们,尤其是我的编程启蒙老师罗凯先生。
感谢CSDN网站上每一位阅读我文章的网友们,是你们给了我信心,让我一直写下去。
感谢实战篇中游戏实例的美术人员:其中第11章游戏实例的美术人员为许鹏,第12章游戏实例的美术人员为李祖一。
感谢机械工业出版社华章公司的杨福川和白宇,感谢二位老师在这一段时间中始终支持我的写作,是他们的鼓励和帮助引导我顺利完成全部书稿。可以说没有二位老师的帮助和支持,我不会有勇气写这本书。
感谢我的爷爷和奶奶,他们是我人生的启蒙老师,尽管他们已经离开这个世界,但是我依然能感受到他们对我的支持和爱。
最后感谢我的父母,他们不仅含辛茹苦抚养我长大,还教会我很多做人的道理,为了他们我要更加努力。
谨以此书献给我最亲爱的家人,以及众多热爱游戏开发和Cocos2D-x的朋友们!
满硕泉(bill_man)
于中国天津

内容简介
《Cocos2D-x权威指南》是目前Coco2D-x领域内容较为全面、系统和极具实战性的一本著作,也是技术版本最新的一本著作。由国内资深的游戏开发工程师和移动应用开发工程师撰写。书中不仅系统讲解了Cocos2D-x的功能特性、使用方法、技术要点、高级知识、开发技巧、最佳实践和性能优化,还通过精心设计的游戏案例详细讲解了Cocos2D-x游戏设计与开发的完整过程,极具启发性和可操作性。更为重要的是,《Cocos2D-x权威指南》将游戏开发人员应该掌握的游戏开发思想也融入了其中。
全书共16章,分为4个部分:准备篇(第1~2章)系统介绍了Cocos2D-x的核心概念、主要功能,以及它在Windows、Android、iOS等平台下的安装、配置、交叉编译环境的搭建,为后面的开发做准备;基础篇(第3~10章)重点讲解了Cocos2D-x的功能特性、使用方法、技术要点,包括Cocos2D-x中的核心类、动作、动画、特效、文字和字体、事件处理机制、地图、声音以及物理引擎等内容,具体结合Cocos2D-x自带的tests实例进行讲解,目的是让读者全面掌握Cocos2D-x的基础理论和基本使用方法;实战篇(第11~12章)利用Cocos2D-x开发了一款纵版射击游戏和横版动作游戏,旨在让读者深入了解完整的游戏开发流程和方法,以及如何将Cocos2D-x的理论知识用到实战中,而且两种游戏分别代表了纵版卷轴和横版卷轴,可以让开发者深入了解不同类型游戏的开发思想;高级篇(第13~16章)讲解了Cocos2D-x的高级知识、开发技巧以及最佳实践,包括粒子系统、游戏中常用算法在Cocos2D-x中的实现、内存管理与性能优化,以及Cocos2D-HTML 5等方面的内容。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多