下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 游戏开发 >Cocos2d-x > Cocos2d-x游戏开发之旅(含CD光盘1张)

Cocos2d-x游戏开发之旅(含CD光盘1张)

综合评级:★★★★★

定价:69.00

作者:钟迪龙

出版社:电子工业出版社

出版日期:2013年8月

页数:488

字数:780000

ISBN:9787121211362

书籍介绍
本书主要讲解了Cocos2d-x游戏图形引擎的使用方法,对常用的API使用方式以及重要的函数进行了深入的分析,并通过详细的游戏实例来介绍Cocos2d-x在实际开发中的应用,书中还大量穿插了在实际的手机游戏开发过程中遇到的问题以及解决方案。

相关课程
目录
第1章 开学典礼 / 1

1.1 出场人物介绍 / 1

1.2 入学要求——本书适合人群 / 2

1.3 这内容有点糟糕——本书风格 / 2

1.4 你需要这些技能——学Cocos2d-x需要什么知识 / 3

1.5 我们为什么要学Cocos2d-x / 4

1.6 先给我们的代码找个温馨的家——环境搭建 / 4

1.6.1 紫色风暴之VS2010 / 4

1.6.2 我的Cocos2d-x版本 / 5

1.6.3 看看前辈们的毕业设计——运行官方Demo / 6

1.7 广告时间——提供一些学习资源 / 8

第2章 不离不弃的HelloWorld / 10

2.1 简单到无法想象——直接运行HelloCpp项目 / 10

2.2 新建Cocos2d-x项目遇到的麻烦——成功新建一个HelloWorld / 12

2.2.1 创建Cocos2d-x项目 / 12

2.2.2 解决编译报错的方案1——直接复制源文件 / 14

2.2.3 解决编译报错的方案2——修改项目配置 / 17

2.3 HelloWorld,没有想象中的简单——简单解析HelloWorld / 19

2.3.1 HelloWorld是如何显示到窗口的 / 19

2.3.2 场景其实不是真正的场景 / 20

2.4 实例来了 / 23

第3章 我们来学习怎么爬行 / 29

3.1 环游世界——场景 / 29

3.2 一切的主宰——导演 / 30

3.2.1 加载第一个场景 / 30

3.2.2 简单的切换场景 / 30

3.2.3 包含特效的切换场景 / 32

3.2.4 赠送的——推进和弹出场景 / 34

3.3 你走你的,我走我的——层 / 36

3.4 比对象还要可爱的对象——精灵来了 / 37

3.5 我得下命令——菜单 / 38

3.6 当个背包客——节点 / 40

第4章 我们来学习怎么走路 / 43

4.1 吉他独奏《天空之城》——播放声音 / 43

4.2 控件篇1——我最爱的九妹和按钮事件 / 44

4.2.1 你好,九妹——可拉伸图片 / 44

4.2.2 解决使用extensions库时编译报错的问题 / 46

4.2.3 九妹和按钮搭配 / 48

4.2.4 丰富多彩的按钮事件 / 49

4.2.5 啰嗦一下——CCControlButton特别的小功能 / 51

4.3 控件篇2——我不是DJ之圆形音量按钮 / 51

4.3.1 圆形音量按钮 / 51

4.4 控件篇3——我要战斗之血量条 / 54

4.4.1 又是一个音量控制按钮 / 54

4.4.2 我要的血量条 / 55

4.5 动作篇1——简简单单的运动 / 56

4.5.1 你想去哪,你想走多远——CCMoveTo和CCMoveBy / 56

4.5.2 我要减肥——CCScaleTo和CCScaleBy / 58

4.5.3 卡牌翻转特效——用CCScaleTo就可以实现 / 61

4.5.4 闪亮登场——CCBlink / 62

4.6 动作讲解2——更复杂的运动 / 63

4.6.1 我要你按照我的路线走——CCBezierTo和CCBezierBy / 63

4.6.2 我没让你停,重复动作——CCRepeatForever / 66

4.6.3 动作一起做,一边走一边转一边跳——CCSequence / 67

4.7 动作讲解3——动作监听 / 69

4.7.1 小若,到家了告诉我一声——动作结束监听 / 69

4.7.2 动作家族族谱 / 70

4.8 屏幕触摸事件 / 72

4.8.1 屏幕事件初探 / 72

4.8.2 复数形式的函数——每个CCLayer都能获取屏幕事件 / 75

4.8.3 单数形式的函数——截断事件,一个CCLayer的垄断 / 77

第5章 是时候跑起来了——《LittleRunner》 / 80

5.1 这是一个什么游戏 / 80

5.2 找个主角回来——创建主角精灵 / 81

5.2.1 创建筛选器 / 81

5.2.2 创建实体基类 / 82

5.2.3 创建主角类 / 83

5.2.4 创建游戏场景 / 84

5.2.5 修改游戏窗口大小 / 87

5.3 其实她不想跑——创建无限滚动地图 / 87

5.3.1 每一帧都可以操作——scheduleUpdate初探 / 87

5.3.2 翻滚吧,地图——地图无限滚动 / 89

5.4 开心的时候——让主角跳起来 / 91

5.4.1 CCControlButton的应用——创建跳跃按钮 / 91

5.4.2 CCJumpBy的应用——给主角添加跳跃动作 / 93

5.5 金钱诱惑——加入怪物 / 95

5.5.1 怪物诞生 / 95

5.5.2 怪物巢穴——创建怪物管理器 / 97

5.5.3 贪婪的主角——怪物碰撞检测 / 99

5.5.4 疼了就退后——增加主角受伤时的动作 / 103

5.6 监控一切——创建分数标签、血量条等属性对象 / 105

第6章 精灵来了第二季 / 109

6.1 一大波精灵来袭——大量精灵单独绘制的缺陷 / 109

6.2 把相同的精灵装上车——使用CCSpriteBatchNode优化绘制 / 110

6.2.1 一次渲染——CCSpriteBatchNode的特别之处 / 110

6.2.2 什么是纹理——CCTexture简单解说 / 112

6.3 遇到不同的精灵怎么办——TexturePacker工具使用 / 114

6.3.1 同一张图片,同一个纹理 / 114

6.3.2 将多张图片打包到一起 / 115

6.3.3 加载打包后的图片 / 117

6.4 是动画,不是动作——CCAnimation / 118

6.4.1 用打包前的图片创建动画 / 118

6.4.2 用打包后的图片创建动画 / 121

6.4.3 额外赠送——动画创建辅助类 / 123

第7章 游戏实例之《跑跑跑》 / 127

7.1 更丰富的世界——使用Tiled地图 / 127

7.1.1 世界诞生——创建跑步场景 / 127

7.1.2 Tiled地图来了——使用Tiled Map Editor创建地图文件 / 129

7.1.3 你报错了吗——Tiled Editor常见路径错误 / 130

7.2 嘿,培养新人——创建新的主角 / 131

7.2.1 主角诞生——创建实体类和主角类 / 131

7.2.2 固定主角出生点——对象层的使用 / 134

7.2.3 让主角跑——添加主角动画 / 136

7.3 更智能的主角——添加角色控制器 / 137

7.3.1 创建控制器基类 / 137

7.3.2 带着它就能跑——主角移动控制器 / 138

7.3.3 焦点是主角——让地图随着主角滚动 / 141

7.4 更多的内容 / 144

7.4.1 让主角上下移动——三方移动控制器 / 144

7.4.2 添加障碍物——Tiled障碍层的使用 / 148

7.4.3 添加能吃的物品以及胜利条件 / 153

第8章 用多线程做定时器?你疯了——schedule很强大 / 158

8.1 我爱单线程——schedule介绍 / 158

8.2 每一帧都有我——scheduleUpdate和update / 158

8.3 定时器可以这么做——schedule和回调函数 / 160

8.3.1 不调用update函数,调用自己的函数 / 160

8.3.2 真正的定时器 / 162

8.4 让一切都停下来——unSchedule / 162

8.5 触发器可以这么做——scheduleOnce和回调函数 / 164

8.6 额外赠送,我总是很关注我暗恋的女孩——观察者模式 / 165

8.6.1 你喜欢谁?我帮你留意——观察者模式扫盲 / 165

8.6.2 Cocos2d-x提供的观察者模式工具类——CCNotificationCenter / 166

8.6.3 addObserver和postNotification函数传递数据的区别 / 170

8.6.4 额外赠送——自己实现简单的观察者 / 172

第9章 野外生存训练 / 177

9.1 师父走了,你怎么办——学会查看官方Demo / 177

9.2 迟早都要学会——学习查看Demo源代码 / 178

9.3 别忘了开源——学习查看Cocos2d-x源代码 / 179

9.3.1 为什么addObserver和postNotification不能同时传递数据 / 179

9.4 物竞天择,没用的就要被淘汰——retain和release / 183

9.4.1 为什么会有retain / 183

9.4.2 真正的凶手autoRelease / 183

9.4.3 看代码实际点 / 183

9.4.4 原理来了 / 186

9.4.5 实际情况 / 187

9.4.6 倒底什么时候要retain / 187

9.5 再传授几招 / 188

9.5.1 在调试项目时,跟踪并进入Cocos2d-x的源码 / 188

9.5.2 什么?你忘了保存记忆?我们一起十年了啊——保存数据 / 189

9.6 我能摆脱编译的噩梦——读取Csv配置文件 / 191

9.6.1 什么是Csv文件——Csv格式文件扫盲 / 191

9.6.2 如何创建一个Csv文件 / 192

9.6.3 预热——编写字符串工具类 / 193

9.6.4 辅助工具——编写文本读取工具类 / 196

9.6.5 进入主题——编写Csv文件读取工具类 / 197

第10章 睡觉的时候不要吃东西——有限状态机 / 205

10.1 花5分钟告诉你什么是有限状态机 / 205

10.1.1 简单认识 / 205

10.1.2 一个很“好玩”的游戏 / 205

10.1.3 实现简单有限状态机的类 / 206

10.2 状态模式之我很胖但我很强 / 209

10.2.1 什么是状态模式 / 209

10.2.2 用状态模式实现有限状态机 / 211

10.3 真正的状态机来了 / 216

10.3.1 创建状态机类 / 216

10.3.2 被释放的木头类 / 218

10.4 事件驱动,你想象不到的强大 / 221

10.4.1 彻底抛弃update函数——新的状态机类 / 221

10.4.2 更智能的状态类 / 224

10.4.3 见证新的运作情况 / 225

第11章 我比Csv更厉害——强大的lua / 228

11.1 让Lua和C++牵手 / 228

11.1.1 Lua的堆栈和全局表 / 228

11.1.2 Lua和C++的第一次通信 / 228

11.2 Demo讲解之Lua和C++牵手 / 229

11.2.1 引入头文件 / 230

11.2.2 开始使用 / 231

11.2.3 执行Lua脚本 / 232

11.2.4 重置栈顶索引,将全局变量放到堆栈中 / 233

11.2.5 最后一步,C++取得字符串 / 233

11.3 简单解析Lua的堆栈 / 234

11.4 来点高难度的,获取Lua表结构的数据 / 235

11.4.1 什么是table / 235

11.4.2 获取table变量 / 236

11.4.3 lua_gettable函数 / 236

11.5 C++调用Lua函数 / 239

11.6 Lua调用C++的函数 / 240

第12章 额外奉献,状态机代码生成工具——SMC / 244

12.1 加快状态机开发速度——SMC是什么 / 244

12.2 永远都从HelloWorld开始 / 245

12.2.1 这是令牌——sm配置文件 / 245

12.2.2 化令牌为力量——使用Smc.jar将配置文件转换为代码 / 246

12.2.3 一劳永逸——更方便的代码转换方式 / 247

12.2.4 整装待发——导入所需文件到项目中 / 247

12.2.5 最后的最后——编写主体类 / 248

12.2.6 简单解析原理 / 249

12.3 实例之SMC版木头写代码 / 252

12.3.1 木头的逻辑 / 252

12.3.2 编写剧本——sm配置文件 / 253

12.3.3 主角诞生——编写Mutou主体类 / 255

12.3.4 导演开拍——编写触发状态切换的功能 / 259

第13章 自力更生——自己写一个UI模块 / 264

13.1 刚开始必须要轻松一下——UI模块思路简介 / 264

13.1.1 它能为我们做些什么——UI模块包含的功能 / 264

13.1.2 一览众山小——UI模块设计思路图 / 265

13.2 XML文件和属性模块 / 266

13.2.1 一切的源头——UI的XML配置文件 / 266

13.2.2 知识补充1——TinyXML介绍 / 268

13.2.3 知识补充2——TinyXML的HelloWorld / 268

13.2.4 知识补充3——用TinyXML读取UI模块的XML配置文件 / 272

13.2.5 封装,我们要记住封装——XML标签节点对象 / 276

13.2.6 我负责保存,你负责修饰——XML标签节点属性设置器 / 283

13.3 尝点甜头——创建控件 / 286

13.4 主角来了——组件 / 288

13.4.1 控件基类——MMBase / 289

13.4.2 普通窗口控件——MMNormalWin / 290

13.4.3 标签控件——MMLabel / 291

13.4.4 甜点来了——测试新的控件类 / 293

13.5 控件管理模块 / 296

13.5.1 我是老大——MMWinManager控件管理器 / 296

13.5.2 我是先锋——MMWinSystem控件系统 / 300

13.5.3 我是前台——MMWinDesktop控件顶层桌面 / 304

13.6 控件工厂 / 305

13.6.1 抽象工厂之MMWinBaseFactory / 305

13.6.2 控件工厂之MMWinFactory / 306

13.6.3 装饰工厂之MMWinProperityFactory / 307

13.6.4 最后的事情——运行项目 / 310

13.7 更完整的UI模块 / 311

第14章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(上篇) / 313

14.1 开篇——最后的游戏实例 / 313

14.1.1 为什么是塔防游戏 / 313

14.1.2 《卡牌塔防》功能简介——我们能学到哪些知识 / 313

14.2 启程——关卡编辑器 / 315

14.2.1 一个英雄一个坑——炮台坐标编辑器 / 315

14.2.2 按照我给的路径走——怪物坐标编辑器 / 335

14.2.3 添加更多方便的操作 / 343

14.3 磨刀不误砍柴工——预备知识 / 350

14.3.1 导演的助手——场景管理器 / 350

14.3.2 数据读取模块 / 353

14.3.3 全局参数 / 354

14.3.4 请说英文好吗?不,说中文——I18N工具类 / 356

14.3.5 导入UI模块和TinyXml模块 / 360

第15章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(下篇) / 363

15.1 英雄诞生 / 363

15.1.1 创建关卡场景 / 363

15.1.2 地图层 / 364

15.1.3 实体基类 / 367

15.1.4 英雄管理器1——炮台对象 / 370

15.1.5 英雄管理器2——英雄对象 / 375

15.1.6 英雄管理器3——炮台和英雄的关系 / 379

15.1.7 英雄管理器4——加入创建英雄的功能 / 380

15.2 怪物来袭 / 382

15.2.1 怪物管理器 / 382

15.2.2 移动控制器1——控制器基类 / 388

15.2.3 移动控制器2——移动控制器基类 / 389

15.2.4 移动控制器3——按指定坐标列表移动 / 391

15.2.5 怪物来了 / 395

15.3 英雄进攻 / 399

15.3.1 英雄的一次攻击流程 / 399

15.3.2 在Hero里获取怪物列表 / 400

15.3.3 查找并锁定攻击目标 / 403

15.3.4 英雄的攻击 / 404

15.3.5 子弹管理器1——子弹类 / 407

15.3.6 子弹管理器2——子弹管理器 / 410

15.3.7 子弹管理器3——英雄开始发射子弹 / 414

15.4 华丽的装饰 / 415

15.4.1 怪物血量条 / 415

15.4.2 炮台操作按钮——英雄华丽升级 / 419

15.4.3 怪物起点和终点魔法台 / 423

第16章 倾情奉献——因为偷懒而诞生的《卡牌塔防》游戏(终结篇) / 427

16.1 关卡信息UI / 427

16.1.1 利用自定义UI模块制作关卡信息面板 / 427

16.1.2 关卡信息数据刷新——CCNotificationCenter的应用 / 432

16.1.3 怪物数量刷新 / 437

16.1.4 怪物安息——怪物死亡后塔魂数量刷新 / 438

16.1.5 堡垒安息——怪物到达堡垒后扣除魔力值 / 439

16.1.6 打怪升级——英雄升级扣除塔魂 / 443

16.2 谢幕 / 444

16.2.1 关卡选择——根据关卡数加载游戏 / 445

16.2.2 胜利条件判断 / 448

16.2.3 失败条件判断 / 452

16.3 移植游戏到Android平台 / 452

16.3.1 傻瓜式的Android环境搭建1——准备工作 / 453

16.3.2 傻瓜式的Android环境搭建2——解压和安装 / 454

16.3.3 傻瓜式的Android环境搭建3——测试一下吧 / 457

16.3.4 不需要Cygwin——生成并导入Android项目 / 458

16.3.5 怎么编译C++文件——创建Builder / 459

16.3.6 开始编译——Android.mk文件 / 464

第17章 额外的一些东西 / 468

17.1 常见错误及解决方案 / 468

17.1.1 调用可变参数函数时,总是莫名报错 / 468

17.1.2 无法解析的外部符号(或命令) / 468

17.1.3 Android移植编译报错——undefined reference to / 469

17.1.4 使用了TinyXML后,移植到Android中运行报错 / 469

17.1.5 CCLabelTTF变成了一个黑块——多线程引起的Bug / 470

17.2 最后的内容 / 470

17.2.1 不管游戏多快,一帧就是一帧,我们能做很多事情 / 470

17.2.2 给读者的惊喜——丁小若寄语 / 471

17.2.3 请提供你的意见以及你发现的Bug / 471

热门图书
推荐新闻
技术文库
论坛推荐