《Cocos2d-x实战 C++卷》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:关东升著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302379300
  • 页数:696 页
图书介绍:本书系统论述了基于C++的cocos2d-x手机游戏开发的技术,介绍了cocos 2d-x开发环境搭建,精灵与场景,动作,动画,特效,音效,粒子系统,瓦片地图,物理引擎,性能优化,cocos2d-x的设计模式以及部分案例等内容。

第一篇 开发基础 2

第1章 准备开始 2

1.1 本书学习路线图 2

1.2 使用实例代码 3

第2章 Cocos2d-x简介与环境搭建 5

2.1 移动平台游戏引擎简介 5

2.2 Cocos2d家谱 5

2.3 Cocos2d-x设计目标 6

2.4 在Windows平台下开始开发Cocos2d-x游戏 8

2.4.1 使用Visual Studio开发工具 8

2.4.2 下载和使用Cocos2d-x案例 9

2.4.3 生成API文档 10

本章小结 18

第3章 Hello Cocos2d-x 19

3.1 第一个Cocos2d-x游戏 19

3.1.1 创建工程 19

3.1.2 工程文件结构 21

3.1.3 代码解释 22

3.2 Cocos2d-x核心概念 28

3.2.1 导演 28

3.2.2 场景 28

3.2.3 层 28

3.2.4 精灵 31

3.2.5 菜单 31

3.3 Node与Node层级架构 32

3.3.1 Node中重要的操作 32

3.3.2 Node中重要的属性 34

3.3.3 游戏循环与调度 36

3.4 Cocos2d-x坐标系 37

3.4.1 UI坐标 38

3.4.2 OpenGL坐标 38

3.4.3 世界坐标和模型坐标 38

3.5 Win32平台下设置屏幕 43

本章小结 43

第4章 字符串、标签和菜单 44

4.1 Cocos2d-x中的字符串 44

4.1.1 使用const char*和std::string 44

4.1.2 使用cocos2d::__String 45

4.1.3 Win32平台下中文乱码问题 46

4.2 使用标签 47

4.2.1 LabelTTF 47

4.2.2 LabelAtlas 49

4.2.3 LabelBMFont 50

4.2.4 Cocos2d-x3.x标签类Label 51

4.2.5 标签中文乱码问题 54

4.3 使用菜单 57

4.3.1 文本菜单 58

4.3.2 精灵菜单和图片菜单 60

4.3.3 开关菜单 62

本章小结 64

第5章 精灵 65

5.1 Sprite精灵类 65

5.1.1 创建Sprite精灵对象 65

5.1.2 实例:使用纹理对象创建Sprite对象 66

5.2 精灵的性能优化 67

5.2.1 使用纹理图集 68

5.2.2 使用精灵帧缓存 70

本章小结 73

第6章 场景与层 74

6.1 场景与层的关系 74

6.2 场景切换 75

6.2.1 场景切换相关函数 75

6.2.2 场景过渡动画 80

6.3 场景的生命周期 82

6.3.1 生命周期函数 82

6.3.2 多场景切换生命周期 83

本章小结 85

第7章 动作、特效和动画 86

7.1 动作 86

7.1.1 瞬时动作 87

7.1.2 间隔动作 92

7.1.3 组合动作 100

7.1.4 动作速度控制 105

7.1.5 函数调用 111

7.2 特效 116

7.2.1 网格动作 116

7.2.2 实例:特效演示 116

7.3 动画 122

7.3.1 帧动画 122

7.3.2 实例:帧动画使用 122

本章小结 125

第8章 Cocos2d-x用户事件 126

8.1 事件处理机制 126

8.1.1 事件分发器 127

8.1.2 触摸事件 128

8.1.3 实例:单点触摸事件 129

8.1.4 实例:使用Lambda表达式 134

8.1.5 键盘事件 136

8.1.6 鼠标事件 137

8.2 在层中进行事件处理 138

8.2.1 触摸事件 139

8.2.2 实例:单点触摸事件 140

8.3 加速度计与加速度事件 143

8.3.1 加速度计 143

8.3.2 使用事件分发器 144

8.3.3 使用层加速度计事件 145

8.3.4 实例:运动的小球 145

本章小结 148

第二篇 开发进阶 150

第9章 游戏背景音乐与音效 150

9.1 Cocos2d-x中的音频文件 150

9.1.1 音频文件简介 150

9.1.2 Cocos2d-x跨平台音频支持 151

9.2 使用CocosDenshion引擎 152

9.2.1 音频文件的预处理 152

9.2.2 播放背景音乐 153

9.2.3 停止播放背景音乐 155

9.2.4 背景音乐播放暂停与继续 156

9.3 实例:设置背景音乐与音效 157

9.3.1 AppDelegate实现 157

9.3.2 HelloWorld场景实现 159

9.3.3 设置场景实现 162

本章小结 166

第10章 粒子系统 167

10.1 问题的提出 167

10.2 粒子系统基本概念 168

10.2.1 实例:打火机 168

10.2.2 粒子发射模式 169

10.2.3 粒子系统属性 169

10.3 Cocos2d-x内置粒子系统 173

10.3.1 内置粒子系统 173

10.3.2 实例:内置粒子系统 173

10.4 自定义粒子系统 177

10.4.1 代码创建 177

10.4.2 plist文件创建 180

本章小结 183

第11章 瓦片地图 184

11.1 地图性能问题 184

11.2 Cocos2d-x中瓦片地图API 186

11.3 实例:忍者无敌 187

11.3.1 设计地图 188

11.3.2 程序中加载地图 189

11.3.3 移动精灵 190

11.3.4 检测碰撞 192

11.3.5 滚动地图 198

本章小结 200

第12章 物理引擎 201

12.1 使用物理引擎 202

12.1.1 物理引擎核心概念 202

12.1.2 物理引擎与精灵关系 202

12.2 Cocos2d-x3.x中物理引擎封装 204

12.2.1 Cocos2d-x3.x物理引擎API 204

12.2.2 实例:HelloPhysicsWorld 207

12.2.3 实例:碰撞检测 211

12.2.4 实例:使用关节 215

12.3 Box2D引擎 217

12.3.1 Box2D核心概念 217

12.3.2 使用Box2D物理引擎的一般步骤 217

12.3.3 Visual Studio 2012下Box2D开发环境设置 218

12.3.4 实例:HelloBox2D 219

12.3.5 实例:碰撞检测 225

12.3.6 实例:使用关节 229

本章小结 232

第三篇 数据与网络 234

第13章 Cocos2d-x中使用的数据容器类 234

13.1 Cocos2d-x中两大类——Ref和Value 234

13.1.1 Cocos2d-x根类Ref 235

13.1.2 包装类Value 236

13.2 Ref列表容器 237

13.2.1 _Array容器 237

13.2.2 实例:_Array容器 238

13.2.3 Vector<T>容器 241

13.2.4 实例:Vector<T>容器 243

13.3 Ref字典容器 245

13.3.1 _Dictionary容器 246

13.3.2 实例:Dictionary容器 247

13.3.3 Map<K,V>容器 251

13.3.4 实例:Map<K,V>容器 252

13.4 Value列表容器——ValueVector 255

13.4.1 ValueVector常用API 255

13.4.2 实例:使用ValueVector容器 256

13.5 Value字典容器——ValueMap和ValueMapIntKey 258

13.5.1 ValueMap和ValueMapIntKey常用API 258

13.5.2 实例:使用ValueMap容器 259

本章小结 262

第14章 数据持久化 263

14.1 使用FileUtils访问文件 263

14.1.1 Cocos2d-x中的目录 263

14.1.2 实例:文件读写 265

14.1.3 实例:路径搜索 268

14.2 持久化简介 270

14.3 UserDefault数据持久化 270

14.3.1 UserDefaultAPI 271

14.3.2 实例:保存背景音乐和音效设置 272

14.4 属性列表数据持久化 279

14.4.1 属性列表简介 279

14.4.2 实例:MyNotes 281

14.4.3 使用_Dictionary读写属性列表文件 282

14.4.4 使用ValueMap读写属性列表文件 286

14.4.5 使用ValueVector读取属性列表文件 289

14.5 SQLite数据库数据持久化 292

14.5.1 SQLite数据库简介 292

14.5.2 Visual Studio下SQLite数据库开发环境设置 293

14.5.3 实例:重构MyNotes 296

14.5.4 创建数据库 297

14.5.5 SQLite数据库管理工具 299

14.5.6 查询数据 301

14.5.7 修改数据 304

本章小结 307

第15章 数据交换格式 308

15.1 CSV数据交换格式 310

15.1.1 文档结构 310

15.1.2 CSV格式解码 311

15.2 XML数据交换格式 315

15.2.1 文档结构 315

15.2.2 SAX解析 317

15.2.3 DOM解析 324

15.3 JSON数据交换格式 330

15.3.1 文档结构 330

15.3.2 JSON框架jsoncpp和rapidjson比较 331

15.3.3 实例:rapidjson解码 331

15.3.4 实例:rapidjson编码 337

本章小结 341

第16章 基于HTTP的网络通信 342

16.1 网络结构 342

16.1.1 客户端服务器结构网络 342

16.1.2 对等结构网络 342

16.2 HTTP与HTTPS 343

16.3 使用cURL开发客户端 344

16.3.1 cURL与libcurl库 344

16.3.2 Visual Studio下libcurl库开发环境设置 344

16.3.3 实例:重构MyNotes 345

16.4 使用HttpClient开发客户端 354

16.4.1 HttpClient API 354

16.4.2 Visual Studio下HttpClient开发环境设置 355

16.4.3 实例:重构MyNotes 357

本章小结 363

第17章 基于Node.js的Socket.IO网络通信 364

17.1 Node.js简介 364

17.1.1 Node.js安装 364

17.1.2 Node.js测试 365

17.2 使用Socket.IO 366

17.2.1 Socket.IO服务器端开发 367

17.2.2 Cocos2d-x的Socket.IO客户端 369

17.3 实例:Socket.IO重构MyNotes 375

17.3.1 Socket.IO服务器端开发 376

17.3.2 Node.js访问SQLite数据库 377

17.3.3 Cocos2d-x的Socket.IO客户端开发 380

本章小结 386

第四篇 设计与优化 388

第18章 Cocos2d-x中常用的设计模式 388

18.1 单例设计模式 389

18.1.1 问题提出 389

18.1.2 实现原理 389

18.1.3 应用案例 390

18.2 委托设计模式 390

18.2.1 问题提出 391

18.2.2 实现原理 391

18.2.3 应用案例 392

18.3 观察者设计模式与通知机制 396

18.3.1 问题提出 396

18.3.2 实现原理 396

18.3.3 通知机制 397

本章小结 401

第19章 Cocos2d-x中的内存管理 402

19.1 C++内存管理 402

19.1.1 内存分配区域 402

19.1.2 动态内存分配 403

19.2 Ref内存管理 406

19.2.1 内存引用计数 406

19.2.2 自动释放池 407

19.2.3 Ref内存管理规则 410

19.3 Ref内存管理设计模式 412

19.3.1 使用静态构造函数 412

19.3.2 使用访问器 415

19.4 其他类型内存管理 420

19.4.1 Value内存管理 420

19.4.2 Vector<T>和Map<K,V>内存管理 420

本章小结 420

第20章 性能优化 421

20.1 工具 421

20.1.1 使用Xcode中Instruments工具 421

20.1.2 使用Windows任务管理器 426

20.1.3 使Visual Studio内存泄漏检测工具Visual Leak Detector 428

20.1.4 左下角的文字是什么 431

20.2 使用SpriteBatchNode批次渲染 433

20.3 合理使用缓存 434

20.3.1 场景与资源 435

20.3.2 缓存创建和清除时机 436

20.4 网片与纹理优化 438

20.4.1 选择图片格式 438

20.4.2 拼图 439

20.4.3 纹理像素格式 440

20.4.4 纹理缓存异步加载 441

20.4.5 背景图片优化 444

20.5 声音优化 446

20.5.1 声音格式优化 446

20.5.2 声音预处理与清除 447

20.6 多线程并发访问 448

20.6.1 std::thread多线程技术 448

20.6.2 异步预处理声音 449

20.7 SQLite数据库优化 451

20.7.1 表结构优化 451

20.7.2 查询优化 451

20.7.3 插入(或删除)优化 452

20.8 数据交换格式优化 452

本章小结 455

第五篇 平台移植 458

第21章 从Win32到Android平台的移植 458

21.1 搭建交叉编译和打包环境 458

21.1.1 安装Android SDK 460

21.1.2 管理Android SDK 462

21.1.3 管理Android开发模拟器 463

21.1.4 安装Android NDK 465

21.1.5 设置环境变量 466

21.2 交叉编译、打包和运行 467

21.2.1 使用cocos命令行工具 467

21.2.2 Android.mk编译文件 468

21.2.3 使用Eclipse工具 469

21.3 移植问题汇总 473

21.3.1 中文乱码问题 473

21.3.2 SQLite3数据库移植问题 474

21.3.3 JSON框架rapidjson移植问题 475

21.3.4 libcurl库移植问题 476

21.3.5 libNetwork库移植问题 478

21.3.6 横屏与竖屏设置问题 479

本章小结 480

第22章 从Win32到Windows Phone8平台的移植 481

22.1 Windows Phone8开发环境搭建 481

22.1.1 安装Windows Phone SDK8.0 481

22.1.2 安装Visual Studio Express 2012 for Windows Phone8 483

22.2 Cocos2d-x3.x的Windows Phone8工程 484

22.2.1 生成工程 484

22.2.2 运行工程 485

22.2.3 调试工程 486

22.3 移植问题汇总 487

22.3.1 中文乱码问题 487

22.3.2 SQLite3数据库移植问题 489

22.3.3 JSON框架rapidjson移植问题 492

22.3.4 libcurl库移植问题 492

22.3.5 libNetwork库移植问题 494

22.3.6 横屏与竖屏设置问题 497

本章小结 499

第23章 从Win32到iOS平台的移植 500

23.1 iOS开发环境搭建 500

23.1.1 Xcode安装和卸载 500

23.1.2 Xcode操作界面 501

23.2 从Visual Studio工程到Xcode工程 504

23.2.1 添加源文件 504

23.2.2 添加资源文件 505

23.2.3 Xcode中编译并运行 508

23.3 移植问题汇总 509

23.3.1 中文乱码问题 509

23.3.2 SQLite3数据库移植问题 510

23.3.3 JSON框架rapidjson移植问题 512

23.3.4 libcurl库移植问题 512

23.3.5 声音移植问题 514

23.3.6 使用PVR纹理格式 515

23.3.7 横屏与竖屏设置问题 516

23.4 多分辨率屏幕适配 518

23.4.1 问题的提出 518

23.4.2 Cocos2d-x屏幕适配 519

23.4.3 分辨率策略 521

23.4.4 纹理图集资源适配 524

23.4.5 瓦片地图资源适配 526

本章小结 526

第六篇 开发实践 528

第24章 使用Git管理程序代码版本 528

24.1 代码版本管理工具——Git 528

24.1.1 版本控制历史 528

24.1.2 术语和基本概念 529

24.1.3 Git环境配置 529

24.1.4 Git常用命令 530

24.2 代码托管服务——GitHub 533

24.2.1 创建和配置GitHub账号 533

24.2.2 创建代码库 536

24.2.3 删除代码库 536

24.2.4 派生代码库 539

24.2.5 GitHub协同开发 541

24.3 实例:Cocos2d-x游戏项目协同开发 542

24.3.1 提交到GitHub代码库 542

24.3.2 克隆GitHub代码库 545

24.3.3 重新获得GitHub代码库 545

本章小结 546

第25章 Cocos2d-x敏捷开发项目实战——迷失航线手机游戏 547

25.1 迷失航线游戏分析与设计 547

25.1.1 迷失航线故事背景 547

25.1.2 需求分析 547

25.1.3 原型设计 548

25.1.4 游戏脚本 549

25.2 任务1:游戏工程的创建与初始化 550

25.2.1 迭代1.1:创建工程 550

25.2.2 迭代1.2:多分辨率支持 550

25.2.3 迭代1.3:通用类与基类维护 551

25.2.4 迭代1.4:发布到GitHub 555

25.3 任务2:创建Loading场景 555

25.3.1 迭代2.1:添加场景和层 555

25.3.2 迭代2.2:Loading动画 557

25.3.3 迭代2.3:异步加载纹理缓存 557

25.3.4 迭代2.4:异步预处理声音 559

25.4 任务3:创建Home场景 560

25.4.1 迭代3.1:添加场景和层 560

25.4.2 迭代3.2:添加菜单 562

25.5 任务4:创建设置场景 563

25.6 任务5:创建帮助场景 565

25.7 任务6:游戏场景实现 568

25.7.1 迭代6.1:创建敌人精灵 568

25.7.2 迭代6.2:创建玩家飞机精灵 573

25.7.3 迭代6.3:创建炮弹精灵 576

25.7.4 迭代6.4:初始化游戏场景 578

25.7.5 迭代6.5:游戏场景菜单实现 581

25.7.6 迭代6.6:玩家飞机发射炮弹 584

25.7.7 迭代6.7:炮弹与敌人的碰撞检测 584

25.7.8 迭代6.8:玩家飞机与敌人的碰撞检测 588

25.7.9 迭代6.9:玩家飞机生命值显示 590

25.7.10 迭代6.10:显示玩家得分情况 591

25.8 任务7:游戏结束场景 591

本章小结 592

第26章 为迷失航线游戏添加广告 593

26.1 使用谷歌AdMob广告 593

26.1.1 注册AdMob账号 593

26.1.2 管理AdMob广告 593

26.1.3 AdMob广告类型 597

26.1.4 下载谷歌AdMob Ads SDK 597

26.2 为迷失航线游戏Android平台添加AdMob广告 599

26.2.1 Cocos2d-x引擎Android平台下AdMob开发环境搭建 599

26.2.2 编写AdMob相关代码 602

26.2.3 交叉编译与打包运行 606

26.3 为迷失航线游戏Windows Phone8平台添加AdMob广告 607

26.3.1 Cocos2d-x引擎Windows Phone8平台下AdMob开发环境搭建 607

26.3.2 编写AdMob相关代码 611

26.4 为迷失航线游戏iOS平台添加AdMob广告 614

26.4.1 Cocos2d-x引擎iOS平台下AdMob开发环境搭建 614

26.4.2 编写AdMob相关代码 616

本章小结 621

第27章 把迷失航线游戏发布到Google Play应用商店 622

27.1 谷歌Android应用商店Google Play 622

27.2 Android设备测试 623

27.3 还有“最后一公里” 624

27.3.1 添加图标 624

27.3.2 应用程序打包 625

27.4 发布产品 628

27.4.1 上传APK 628

27.4.2 填写商品详细信息 630

27.4.3 添加定价和发布范围 632

本章小结 634

第28章 把迷失航线游戏发布到Windows Phone应用商店 635

28.1 微软Windows Phone应用商店 635

28.2 Windows Phone8设备测试 636

28.2.1 播放音频时程序崩溃问题 636

28.2.2 屏幕分辨率宽度和高度相反问题 637

28.3 还有“最后一公里” 639

28.3.1 使用应用商店测试套件完成“最后一公里” 639

28.3.2 测试应用程序包XAP 640

28.3.3 修改应用程序的基本属性 642

28.3.4 配置图标 642

28.3.5 应用商店磁贴和屏幕快照 644

28.3.6 修改UI相关描述信息 644

28.3.7 修改打包信息 645

28.4 发布产品 646

28.4.1 填写应用信息 647

28.4.2 上传并描述您的程序包 651

本章小结 655

第29章 把迷失航线游戏发布到苹果App Store应用商店 656

29.1 苹果的App Store 656

29.2 iOS设备测试 658

29.2.1 创建开发者证书 658

29.2.2 设备注册 661

29.2.3 创建APP ID 664

29.2.4 创建配置概要文件 667

29.2.5 设备上运行 671

29.3 还有“最后一公里” 673

29.3.1 添加图标 673

29.3.2 添加启动界面 674

29.3.3 修改发布产品属性 675

29.3.4 为发布进行编译 676

29.3.5 应用打包 681

29.4 发布产品 682

29.4.1 创建应用及基本信息 682

29.4.2 应用定价信息 685

29.4.3 基本信息输入 685

29.4.4 上传应用前准备 690

29.4.5 上传应用 692

29.5 常见审核不通过的原因 695

29.5.1 功能问题 695

29.5.2 用户界面问题 695

29.5.3 商业问题 695

29.5.4 不当内容 696

29.5.5 其他问题 696

本章小结 696