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

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

第1章 准备开始 1

1.1 本书学习路线图 1

1.2 如何使用实例代码 2

基础篇 7

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

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

2.2 Cocos2d家谱 7

2.3 Cocos2d-x设计目标 8

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

2.4.1 使用Visual Studio开发工具 10

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

2.4.3 生成API文档 13

本章小结 19

第3章 Hello Cocos2d-x 20

3.1 第一个Cocos2d-x游戏 20

3.1.1 创建工程 20

3.1.2 工程文件结构 23

3.1.3 代码解释 24

3.2 Cocos2d-x核心概念 30

3.2.1 导演 31

3.2.2 场景 31

3.2.3 层 31

3.2.4 精灵 32

3.2.5 菜单 33

3.3 Node与Node层级架构 34

3.3.1 Node中重要的操作 34

3.3.2 Node中重要的属性 35

3.3.3 游戏循环与调度 38

3.4 Cocos2d-x坐标系 39

3.4.1 UI坐标 39

3.4.2 OpenGL坐标 40

3.4.3 世界坐标和模型坐标 40

3.4.4 Win32平台下设置屏幕 45

本章小结 45

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

4.1 Cocos2d-x中的字符串 46

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

4.1.2 使用cocos2d::String 47

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

4.2 使用标签 49

4.2.1 使用标签类Label 50

4.2.2 位图字体 53

4.2.3 图片集标签 54

4.2.4 标签中文无法显示问题 55

4.3 使用菜单 58

4.3.1 文本菜单 59

4.3.2 精灵菜单和图片菜单 62

4.3.3 开关菜单 64

本章小结 66

第5章 精灵 67

5.1 Sprite精灵类 67

5.1.1 创建Sprite精灵对象 67

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

5.2 精灵的性能优化 70

5.2.1 使用纹理图集 70

5.2.2 使用精灵帧缓存 73

本章小结 76

第6章 场景与层 77

6.1 场景与层的关系 77

6.2 场景过渡 78

6.2.1 场景过渡相关函数 78

6.2.2 场景过渡动画 83

6.3 场景的生命周期 85

6.3.1 生命周期函数 85

6.3.2 多场景过渡生命周期 86

本章小结 88

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

7.1 动作 89

7.1.1 瞬时动作 90

7.1.2 间隔动作 95

7.1.3 组合动作 100

7.1.4 动作速度控制 106

7.1.5 函数调用 110

7.2 特效 114

7.2.1 网格动作 115

7.2.2 实例:特效演示 116

7.3 动画 120

7.3.1 帧动画 120

7.3.2 实例:帧动画使用 121

本章小结 123

第8章 Cocos2d-x用户事件 124

8.1 事件处理机制 124

8.1.1 事件分发器 125

8.1.2 触摸事件 126

8.1.3 实例:单点触摸事件 128

8.1.4 实例:使用Lambda表达式 132

8.1.5 键盘事件 134

8.1.6 鼠标事件 135

8.2 在层中进行事件处理 136

8.2.1 触摸事件 137

8.2.2 实例:单点触摸事件 138

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

8.3.1 加速度计 142

8.3.2 使用事件分发器 142

8.3.3 使用层加速度计事件 143

8.3.4 实例:运动的小球 144

本章小结 146

进阶篇 149

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

9.1 Cocos2d-x中音频文件 149

9.1.1 音频文件介绍 149

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

9.2 使用Audio引擎 151

9.2.1 音频文件的预处理 151

9.2.2 播放背景音乐 152

9.2.3 停止播放背景音乐 154

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

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

9.3.1 AppDelegate实现 156

9.3.2 HelloWorld场景实现 158

9.3.3 设置场景实现 160

本章小结 164

第10章 粒子系统 165

10.1 问题的提出 165

10.2 粒子系统基本概念 166

10.2.1 实例:打火机 166

10.2.2 粒子发射模式 167

10.2.3 粒子系统属性 168

10.3 Cocos2d-x内置粒子系统 170

10.3.1 内置粒子系统 170

10.3.2 实例:内置粒子系统 171

10.4 自定义粒子系统 174

10.4.1 代码创建 174

10.4.2 plist文件创建 177

本章小结 180

第11章 瓦片地图 181

11.1 地图性能问题 181

11.2 Cocos2d-x中瓦片地图API 183

11.3 实例:忍者无敌 185

11.3.1 设计地图 185

11.3.2 程序中加载地图 186

11.3.3 移动精灵 188

11.3.4 检测碰撞 190

11.3.5 滚动地图 195

本章小结 197

第12章 物理引擎 198

12.1 使用物理引擎 199

12.1.1 物理引擎核心概念 199

12.1.2 物理引擎与精灵关系 200

12.2 Cocos2d-x 3.x中物理引擎封装 201

12.2.1 Cocos2d-x 3.x物理引擎API 201

12.2.2 实例:HelloPhysicsWorld 204

12.2.3 实例:接触与碰撞检测 208

12.2.4 实例:使用关节 213

12.3 Box2D引擎 215

12.3.1 Box2D核心概念 215

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

12.3.3 实例:HelloBox2D 216

12.3.4 实例:接触与碰撞检测 221

12.3.5 实例:使用关节 225

本章小结 227

第13章 Cocos2d-x GUI控件 228

13.1 按钮 229

13.2 ImageView 232

13.3 文本控件 233

13.3.1 Text 233

13.3.2 TextBMFont 233

13.3.3 RichText 235

13.4 RadioButton和RadioButtonGroup 237

13.5 CheckBox 239

13.6 LoadingBar 240

13.7 滑块控件 242

本章小结 244

第14章 Cocos2d-x中的3D特性 245

14.1 一些3D概念 245

14.1.1 网格和模型 245

14.1.2 相机 246

14.1.3 投影 246

14.2 使用3D精灵 247

14.2.1 创建Sprite3D对象 247

14.2.2 实例:使用模型和纹理Sprite3D对象 247

14.3 3D模型文件格式 250

14.4 使用相机 251

14.4.1 创建和设置Camera对象 251

14.4.2 实例:使用Camera对象 251

14.5 3D粒子系统 253

14.5.1 创建PUParticleSystem3D对象 253

14.5.2 实例:创建Particle Universe 3D粒子 253

本章小结 256

数据与网络篇 259

第15章 Cocos2d-x数据结构 259

15.1 Cocos2d-x中两大类——Ref和Value 259

15.1.1 Cocos2d-x根类Ref 260

15.1.2 包装类Value 260

15.2 Ref列表结构 261

15.2.1 ___Array结构 262

15.2.2 实例:___Array结构 263

15.2.3 Vector<T>结构 266

15.2.4 实例:Vector结构 268

15.3 Ref字典结构 270

15.3.1 _Dictionary结构 270

15.3.2 实例:_Dictionary结构 272

15.3.3 Map<K,V>结构 276

15.3.4 实例:Map<K,V>结构 277

15.4 Value列表结构——ValueVector 279

15.4.1 ValueVector常用API 279

15.4.2 实例:使用ValueVector结构 280

15.5 Value字典结构——ValueMap和ValueMapIntKey 282

15.5.1 ValueMap和ValueMapIntKey常用API 282

15.5.2 实例:使用ValueMap结构 283

本章小结 286

第16章 数据持久化 287

16.1 使用FileUtils访问文件 287

16.1.1 Cocos2d-x中的目录 287

16.1.2 实例:文件读写 289

16.1.3 实例:路径搜索 292

16.2 持久化概述 294

16.3 UserDefault数据持久化 295

16.3.1 UserDefaultAPI 295

16.3.2 实例:保存背景音乐和音效设置 297

16.4 属性列表数据持久化 303

16.4.1 属性列表概述 303

16.4.2 实例:MyNotes 305

16.4.3 使用_Dictionary读写属性列表文件 305

16.4.4 使用ValueMap读写属性列表文件 310

16.4.5 使用ValueVector读取属性列表文件 313

16.5 SQLite数据库数据持久化 315

16.5.1 SQLite数据库介绍 315

16.5.2 Visual Studio下SQLite数据库开发环境设置 316

16.5.3 实例:重构MyNotes 319

16.5.4 创建数据库 320

16.5.5 SQLite数据库管理工具 322

16.5.6 查询数据 324

16.5.7 修改数据 327

本章小结 330

第17章 数据交换格式 331

17.1 CSV数据交换格式 333

17.1.1 文档结构 333

17.1.2 CSV格式解码 335

17.2 XML数据交换格式 339

17.2.1 文档结构 339

17.2.2 SAX解析 341

17.2.3 DOM解析 347

17.3 JSON数据交换格式 353

17.3.1 文档结构 353

17.3.2 JSON框架jsoncpp和rapidjson比较 355

17.3.3 实例:rapidjson解码 355

17.3.4 实例:rapidjson编码 360

本章小结 363

第18章 基于HTTP的网络通信 364

18.1 网络结构 364

18.1.1 客户端服务器结构网络 364

18.1.2 点对点结构网络 364

18.2 HTTP与HTTPS协议 365

18.3 使用cURL开发客户端 366

18.3.1 cURL与libcurl库 366

18.3.2 Visual Studio下libcurl库开发环境设置 366

18.3.3 实例:重构MyNotes 367

18.4 使用HttpClient开发客户端 375

18.4.1 HttpClientAPI 376

18.4.2 Visual Studio下HttpClient开发环境设置 377

18.4.3 实例:重构MyNotes 378

本章小结 384

第19章 基于Node.js的Socket.IO网络通信 385

19.1 Node.js 385

19.1.1 Node.js安装 385

19.1.2 Node.js测试 386

19.2 使用Socket.IO 388

19.2.1 Socket.IO服务器端开发 388

19.2.2 Cocos2d-x的Socket.IO客户端 390

本章小结 396

设计与优化篇 399

第20章 Cocos2d-x中的常用设计模式 399

20.1 单例设计模式 399

20.1.1 问题提出 400

20.1.2 实现原理 400

20.1.3 应用案例 401

20.2 委托设计模式 401

20.2.1 问题提出 401

20.2.2 实现原理 402

20.2.3 应用案例 403

20.3 观察者设计模式与通知机制 406

20.3.1 问题提出 406

20.3.2 实现原理 407

20.3.3 通知机制 408

本章小结 411

第21章 Cocos2d-x中的内存管理 412

21.1 C++内存管理 412

21.1.1 内存分配区域 412

21.1.2 动态内存分配 413

21.2 Ref内存管理 415

21.2.1 内存引用计数 416

21.2.2 自动释放池 417

21.2.3 Ref内存管理规则 420

21.3 Ref内存管理设计模式 422

21.3.1 使用静态构造函数 422

21.3.2 使用访问器 424

21.4 其他类型内存管理 429

21.4.1 Value内存管理 429

21.4.2 Vector<T>和Map<K,V>内存管理 429

本章小结 430

第22章 性能优化 431

22.1 工具 431

22.1.1 Xcode中Instruments工具使用 431

22.1.2 使用Windows任务管理器 435

22.1.3 Visual Studio内存泄漏检测工具——Visual Leak Detector 437

22.1.4 左下角的文字是什么 441

22.2 使用SpriteBatchNode批次渲染 442

22.3 合理使用缓存 444

22.3.1 场景与资源 445

22.3.2 缓存创建和清除时机 446

22.4 图片与纹理优化 448

22.4.1 选择图片格式 449

22.4.2 拼图 450

22.4.3 纹理像素格式 451

22.4.4 纹理缓存异步加载 452

22.4.5 背景图片优化 455

22.5 声音优化 456

22.5.1 声音格式优化 457

22.5.2 声音预处理与清除 458

22.6 多线程并发访问 458

22.6.1 std::thread多线程技术 459

22.6.2 异步预处理声音 460

22.7 SQLite数据库优化 461

22.7.1 表结构优化 461

22.7.2 查询优化 462

22.7.3 插入(或删除)优化 462

22.8 数据交换格式优化 463

本章小结 465

平台移植篇 469

第23章 从Win32平台到Android平台移植 469

23.1 搭建交叉编译和打包环境 469

23.1.1 Android SDK安装 472

23.1.2 管理Android SDK 473

23.1.3 管理Android开发模拟器 475

23.1.4 Android NDK安装 476

23.1.5 设置环境变量 478

23.2 交叉编译、打包和运行 479

23.2.1 使用cocos命令行工具 479

23.2.2 Android.mk编译文件 481

23.3 移植问题汇总 483

23.3.1 中文乱码问题 483

23.3.2 SQLite3数据库移植问题 484

23.3.3 JSON框架rapidjson移植问题 485

23.3.4 libcurl库移植问题 486

23.3.5 libNetwork库移植问题 487

23.3.6 横屏与竖屏设置问题 488

本章小结 489

第24章 从Win32平台到iOS平台移植 490

24.1 iOS开发环境搭建 490

24.1.1 Xcode安装和卸载 490

24.1.2 Xcode操作界面 493

24.2 从Visual Studio工程到Xcode工程 494

24.2.1 添加源文件 495

24.2.2 添加资源文件 496

24.2.3 Xcode中编译并运行 498

24.3 移植问题汇总 498

24.3.1 中文乱码问题 498

24.3.2 SQLite3数据库移植问题 500

24.3.3 JSON框架rapidjson移植问题 500

24.3.4 libcurl库移植问题 502

24.3.5 声音移植问题 503

24.3.6 使用PVR纹理格式 506

24.3.7 横屏与竖屏设置问题 507

本章小结 508

第25章 Cocos2d-x多分辨率屏幕适配 509

25.1 屏幕适配问题的提出 509

25.2 Cocos2d-x屏幕适配 510

25.2.1 三种分辨率 510

25.2.2 分辨率适配策略 513

25.2.3 纹理图集资源适配 515

25.2.4 瓦片地图资源适配 517

本章小结 517

实战篇 521

第26章 使用Git管理程序代码版本 521

26.1 代码版本管理工具——Git 521

26.1.1 版本控制历史 521

26.1.2 术语和基本概念 522

26.1.3 Git环境配置 522

26.1.4 Git常用命令 523

26.2 代码托管服务——GitHub 526

26.2.1 创建和配置GitHub账号 526

26.2.2 创建代码库 529

26.2.3 删除代码库 531

26.2.4 派生代码库 531

26.2.5 GitHub协同开发 534

26.3 实例:Cocos2d-x游戏项目协同开发 535

26.3.1 提交到GitHub代码库 535

26.3.2 克隆GitHub代码库 538

26.3.3 重新获得GitHub代码库 538

本章小结 539

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

27.1 迷失航线游戏分析与设计 540

27.1.1 迷失航线故事背景 540

27.1.2 需求分析 540

27.1.3 原型设计 541

27.1.4 游戏脚本 542

27.2 任务1:游戏工程的创建与初始化 542

27.2.1 迭代1.1:创建工程 543

27.2.2 迭代1.2:多分辨率支持 543

27.2.3 迭代1.3:通用类与基类维护 545

27.2.4 迭代1.4:发布到GitHub 548

27.3 任务2:创建Loading场景 548

27.3.1 迭代2.1:添加场景和层 549

27.3.2 迭代2.2:Loading动画 550

27.3.3 迭代2.3:异步加载纹理缓存 550

27.3.4 迭代2.4:异步预处理声音 552

27.4 任务3:创建Home场景 553

27.4.1 迭代3.1:添加场景和层 553

27.4.2 迭代3.2:添加菜单 554

27.5 任务4:创建设置场景 556

27.6 任务5:创建帮助场景 558

27.7 任务6:游戏场景实现 560

27.7.1 迭代6.1:创建敌人精灵 560

27.7.2 迭代6.2:创建玩家飞机精灵 565

27.7.3 迭代6.3:创建炮弹精灵 567

27.7.4 迭代6.4:初始化游戏场景 569

27.7.5 迭代6.5:游戏场景菜单实现 573

27.7.6 迭代6.6:玩家飞机发射炮弹 574

27.7.7 迭代6.7:炮弹与敌人的接触检测 575

27.7.8 迭代6.8:玩家飞机与敌人的接触检测 578

27.7.9 迭代6.9:玩家飞机生命值显示 580

27.7.10 迭代6.10:显示玩家得分情况 581

27.8 任务7:游戏结束场景 582

本章小结 583

第28章 把迷失航线游戏发布到Google play应用商店 584

28.1 谷歌Android应用商店Google play 584

28.2 Android设备测试 585

28.3 还有“最后一公里” 586

28.3.1 添加图标 587

28.3.2 生成数字签名文件 587

28.3.3 应用程序打包 588

28.4 发布产品 589

28.4.1 上传APK 589

28.4.2 填写商品详细信息 591

28.4.3 定价和发布范围 593

本章小结 595

第29章 把迷失航线游戏发布到苹果App Store 596

29.1 苹果的App Store 596

29.2 还有“最后一公里” 598

29.2.1 添加图标 598

29.2.2 添加启动界面 599

29.2.3 修改发布产品属性 603

29.3 iOS设备测试 605

29.3.1 Xcode设置 605

29.3.2 设备设置 608

29.4 为发布进行编译 610

29.4.1 创建开发者证书 610

29.4.2 创建App ID 614

29.4.3 创建描述文件 618

29.4.4 发布编译 619

29.5 发布上架 623

29.5.1 创建应用 623

29.5.2 应用定价 626

29.5.3 基本信息输入 627

29.5.4 上传应用 631

29.5.5 提交审核 632

29.6 常见审核通不过的原因 635

29.6.1 功能问题 635

29.6.2 用户界面问题 635

29.6.3 商业问题 635

29.6.4 不当内容 636

29.6.5 其他问题 636

本章小结 636