《Cocos2d-x实战(卷Ⅰ):C++开发》

基础篇

第1章    准备开始

1.1   本书学习路线图

1.2   使用实例代码

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

2.1   移动平台游戏引擎介绍

2.2   Cocos2d家谱

2.3   Cocos2d-x设计目标

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

2.4.1       使用Visual Studio开发工具

2.4.2       下载和使用Cocos2d-x案例

2.4.3       生成API文档

本章小结

第3章    HelloCocos2d-x

3.1   第一个Cocos2d-x游戏

3.1.1       创建工程

3.1.2       工程文件结构

3.1.3       代码解释

3.2   Cocos2d-x核心概念

3.2.1       导演

3.2.2       场景

3.2.3       层

3.2.4       精灵

3.2.5       菜单

3.3   Node与Node层级架构

3.3.1       Node中重要的操作

3.3.2       Node中重要的属性

3.3.3       游戏循环与调度

3.4   Cocos2d-x坐标系

3.4.1       UI坐标

3.4.2       OpenGL坐标

3.4.3       世界坐标和模型坐标

3.5   Win32平台下设置屏幕

本章小结

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

4.1   Cocos2d-x中的字符串

4.1.1       使用const char*和std::string

4.1.2       使用cocos2d::__String

4.1.3       Win32平台下中文乱码问题

4.2   使用标签

4.2.1       LabelTTF

4.2.2       LabelAtlas

4.2.3       LabelBMFont

4.2.4       Cocos2d-x3.x标签类Label

4.2.5       标签中文乱码问题

4.3   使用菜单

4.3.1       文本菜单

4.3.2       精灵菜单和图片菜单

4.3.3       开关菜单

本章小结

第5章    精灵

5.1   Sprite精灵类

5.1.1       创建Sprite精灵对象

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

5.2   精灵的性能优化

5.2.1       使用纹理图集

5.2.2       使用精灵帧缓存

本章小结

第6章    场景与层

6.1   场景与层的关系

6.2   场景切换

6.2.1       场景切换相关函数

6.2.2       场景过渡动画

6.3   场景的生命周期

6.3.1       生命周期函数

6.3.2       多场景切换生命周期

本章小结

第7章    动作、特效和动画

7.1   动作

7.1.1       瞬时动作

7.1.2       间隔动作

7.1.3       组合动作

7.1.4       动作速度控制

7.1.5       函数调用

7.2   特效

7.2.1       网格动作

7.2.2       实例:特效演示

7.3   动画

7.3.1       帧动画

7.3.2       实例:帧动画使用

本章小结

第8章    Cocos2d-x用户事件

8.1   事件处理机制

8.1.1       事件分发器

8.1.2       触摸事件

8.1.3       实例:单点触摸事件

8.1.4       实例:使用Lambda 表达式

8.1.5       键盘事件

8.1.6       鼠标事件

8.2   在层中进行事件处理

8.2.1       触摸事件

8.2.2       实例:单点触摸事件

8.3   加速度计与加速度事件

8.3.1       加速度计

8.3.2       使用事件分发器

8.3.3       使用层加速度计事件

8.3.4       实例:运动的小球

本章小结

进阶篇

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

9.1   Cocos2d-x中音频文件

9.1.1       音频文件介绍

9.1.2       Cocos2d-x跨平台音频支持

9.2   使用CocosDenshion引擎

9.2.1       音频文件的预处理

9.2.2       播放背景音乐

9.2.3       停止播放背景音乐

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

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

9.3.1       AppDelegate实现

9.3.2       HelloWorld场景实现

9.3.3       设置场景实现

本章小结

第10章  粒子系统

10.1 问题的提出

10.2 粒子系统基本概念

10.2.1     实例:打火机

10.2.2     粒子发射模式

10.2.3     粒子系统属性

10.3 Cocos2d-x内置粒子系统

10.3.1     内置粒子系统

10.3.2     实例:内置粒子系统

10.4 自定义粒子系统

10.4.1     代码创建

10.4.2     plist文件创建

本章小结

第11章  瓦片地图

11.1 地图性能问题

11.2 Cocos2d-x中瓦片地图API

11.3 实例:忍者无敌

11.3.1     设计地图

11.3.2     程序中加载地图

11.3.3     移动精灵

11.3.4     检测碰撞

11.3.5     滚动地图

本章小结

第12章  物理引擎

12.1 使用物理引擎

12.1.1     物理引擎核心概念

12.1.2     物理引擎与精灵关系

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

12.2.1     Cocos2d-x3.x物理引擎API

12.2.2     实例:HelloPhysicsWorld

12.2.3     实例:碰撞检测

12.2.4     实例:使用关节

12.3 Box2D引擎

12.3.1     Box2D核心概念

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

12.3.3     VisualStudio 2012下Box2D开发环境设置

12.3.4     实例:HelloBox2D

12.3.5     实例:碰撞检测

12.3.6     实例:使用关节

本章小结

网络与数据篇

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

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

13.1.1     Cocos2d-x根类Ref

13.1.2     包装类Value

13.2 Ref列表容器

13.2.1     __Array容器

13.2.2     实例:__Array容器

13.2.3     Vector<T>容器

13.2.4     实例:Vector容器

13.3 Ref字典容器

13.3.1     __Dictionary容器

13.3.2     实例:__Dictionary容器

13.3.3     Map<K,V>容器

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

13.4 Value列表容器——ValueVector

13.4.1     ValueVector常用API

13.4.2     实例:使用ValueVector容器

13.5 Value字典容器——ValueMap和ValueMapIntKey

13.5.1     ValueMap和ValueMapIntKey常用API

13.5.2     实例:使用ValueMap容器

本章小结

第14章  文件访问与数据持久化

14.1 使用FileUtils访问文件

14.1.1     Cocos2d-x中的目录

14.1.2     实例:文件读写

14.1.3     实例:路径搜索

14.2 持久化概述

14.3 UserDefault数据持久化

14.3.1     UserDefaultAPI

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

14.4 属性列表数据持久化

14.4.1     属性列表概述

14.4.2     实例:MyNotes

14.4.3     使用__Dictionary读写属性列表文件

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

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

14.5 SQLite数据库数据持久化

14.5.1     SQLite数据库介绍

14.5.2     VisualStudio下SQLite数据库开发环境设置

14.5.3     实例:重构MyNotes

14.5.4     创建数据库

14.5.5     SQLite数据库管理工具

14.5.6     查询数据

14.5.7     修改数据

本章小结

第15章  数据交换格式

15.1 CSV数据交换格式

15.1.1     文档结构

15.1.2     CSV格式解码

15.2 XML数据交换格式

15.2.1     文档结构

15.2.2     SAX解析

15.2.3     DOM解析

15.3 JSON数据交换格式

15.3.1     文档结构

15.3.2     JSON框架jsoncpp和rapidjson比较

15.3.3     实例:rapidjson解码

15.3.4     实例:rapidjson编码

本章小结

第16章  基于HTTP网络通信

16.1 网络结构

16.1.1     客户端服务器结构网络

16.1.2     点对点结构网络

16.2 HTTP与HTTPS协议

16.3 使用cURL开发客户端

16.3.1     cURL与libcurl库

16.3.2     VisualStudio下libcurl库开发环境设置

16.3.3     实例:重构MyNotes

16.4 使用HttpClient开发客户端

16.4.1     HttpClientAPI

16.4.2     VisualStudio下HttpClient开发环境设置

16.4.1     实例:重构MyNotes

本章小结

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

17.1 Node.js

17.1.1     Node.js安装

17.1.2     Node.js测试

17.2 使用Socket.IO

17.2.1     Socket.IO服务器端开发

17.2.2     Cocos2d-x的Socket.IO客户端

17.3 实例:Socket.IO重构MyNotes

17.3.1     Socket.IO服务器端开发

17.3.2     Node.js访问SQLite数据库

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

本章小结

设计与优化篇

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

18.1 单例设计模式

18.1.1     问题提出

18.1.2     实现原理

18.1.3     应用案例

18.2 委托设计模式

18.2.1     问题提出

18.2.2     实现原理

18.2.3     应用案例

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

18.3.1     问题提出

18.3.2     实现原理

18.3.3     通知机制

本章小结

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

19.1 C++内存管理

19.1.1     内存分配区域

19.1.2     动态内存分配

19.2 Ref内存管理

19.2.1     内存引用计数

19.2.2     自动释放池

19.2.3     Ref内存管理规则

19.3 Ref内存管理设计模式

19.3.1     使用静态构造函数

19.3.2     使用访问器

19.4 其它类型内存管理

19.4.1     Value内存管理

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

本章小结

第20章  性能优化

20.1 工具

20.1.1     Xcode中Instruments工具使用

20.1.2     使用Windows任务管理器

20.1.3     VisualStudio内存泄漏检测工具——VisualLeak Detector

20.1.4     左下角的文字是什么?

20.2 使用SpriteBatchNode批次渲染

20.3 合理使用缓存

20.3.1     场景与资源

20.3.2     缓存创建和清除时机

20.4 图片与纹理优化

20.4.1     选择图片格式

20.4.2     拼图

20.4.3     纹理像素格式

20.4.4     纹理缓存异步加载

20.4.5     背景图片优化

20.5 声音优化

20.5.1     声音格式优化

20.5.2     声音预处理与清除

20.6 多线程并发访问

20.6.1     std::thread多线程技术

20.6.2     异步预处理声音

20.7 SQLite数据库优化

20.7.1     表结构优化

20.7.2     查询优化

20.7.3     插入(或删除)优化

20.8 数据交换格式优化

本章小结

平台移植篇

第21章  从Win32到Android

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

21.1.1     AndroidSDK安装

21.1.2     管理Android SDK

21.1.3     管理Android开发模拟器

21.1.4     AndroidNDK安装

21.1.5     设置环境变量

21.2 交叉编译和打包

21.2.1     通过命令行交叉编译打包

21.2.1     Android.mk编译文件

21.2.2     使用Eclipse交叉编译打包

21.3 移植问题汇总

21.3.1     中文乱码问题

21.3.2     SQLite3数据库移植问题

21.3.3     JSON框架rapidjson移植问题

21.3.4     libcurl库移植问题

21.3.5     libNetwork库移植问题

21.3.6     横屏与竖屏设置问题

本章小结

第22章  从Win32到Windows Phone 8

22.1 WindowsPhone 8开发环境搭建

22.1.1     WindowsPhone SDK 8.0安装

22.1.2     VisualStudio Express 2012 for Windows Phone 8安装

22.2 Cocos2d-x3.x的Windows Phone8工程

22.2.1     生成工程

22.2.1     运行工程

22.2.1     调试工程

22.3 移植问题汇总

22.3.1     中文乱码问题

22.3.2     SQLite3数据库移植问题

22.3.3     框架rapidjson移植问题

22.3.4     libcurl库移植问题

22.3.5     libNetwork库移植问题

22.3.6     横屏与竖屏设置问题

本章小结

第23章  从Win32到iOS

23.1 iOS开发环境搭建

23.1.1     Xcode安装和卸载

23.1.2     Xcode操作界面

23.2 从Visual Studio工程到Xcode工程

23.2.1     添加源文件

23.2.2     添加资源文件

23.3 移植问题汇总

23.3.1     中文乱码问题

23.3.2     SQLite3数据库移植问题

23.3.3     JSON框架rapidjson移植问题

23.3.4     libcurl库移植问题

23.3.5     声音移植问题

23.3.6     使用PVR纹理格式

23.3.7     横屏与竖屏设置问题

23.4 多分辨率屏幕适配

23.4.1     问题的提出

23.4.2     Cocos2d-x屏幕适配

23.4.3     分辨率策略

23.4.4     纹理图集资源适配

23.4.5     瓦片地图资源适配

本章小结

实战篇

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

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

24.1.1     版本控制历史

24.1.2     术语和基本概念

24.1.3     Git环境配置

24.1.4     Git常用命令

24.1 代码托管服务——GitHub

24.1.1     创建和配置GitHub账号

24.1.2     创建代码库

24.1.3     删除代码库

24.1.4     派生代码库

24.1.5     GitHub协同开发

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

24.2.1     提交到GitHub代码库

24.2.2     克隆GitHub代码库

24.2.3     重新获得GitHub代码库

本章小结

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

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

25.1.1     迷失航线故事背景

25.1.2     需求分析

25.1.3     原型设计

25.1.4     游戏脚本

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

25.2.1     迭代1.1:创建工程

25.2.2     迭代1.2:多分辨率支持

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

25.2.4     迭代1.4:发布到GitHub

25.3 任务2:创建Loading场景

25.3.1     迭代2.1:添加场景和层

25.3.2     迭代2.2:Loading动画

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

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

25.4 任务3:创建Home场景

25.4.1     迭代3.1:添加场景和层

25.4.2     迭代3.2:添加菜单

25.5 任务4:创建设置场景

25.6 任务5:创建帮助场景

25.7 任务6:游戏场景实现

25.7.1     迭代6.1:创建敌人精灵

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

25.7.3     迭代6.3:创建炮弹精灵

25.7.1     迭代6.4:初始化游戏场景

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

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

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

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

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

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

25.8 任务7:游戏结束场景

本章小结

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

26.1 使用谷歌AdMob广告

26.1.1     注册AdMob账号

26.1.2     管理AdMob广告

26.1.3     AdMob广告类型

26.1.4     下载谷歌AdMob Ads SDK

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

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

26.2.2     编写AdMob相关代码

26.2.3     交叉编译与打包运行

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

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

26.3.2     编写AdMob相关代码

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

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

26.4.2     编写AdMob相关代码

本章小结

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

27.1 谷歌Android应用商店Google play

27.2 Android设备测试

27.3 还有“最后一公里”

27.3.1     添加图标

27.3.2     应用程序打包

27.4 发布产品

27.4.1     上传APK

27.4.2     填写商品详细信息

27.4.3     定价和发布范围

本章小结

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

28.1 微软Windows Phone 应用商店

28.2 WindowsPhone 8设备测试

28.2.1     播放音频程序崩溃问题

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

28.3 还有“最后一公里”

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

28.3.2     测试应用程序包XAP

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

28.3.4     配置图标

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

28.3.6     修改UI相关描述信息

28.3.7     修改打包信息

28.4 发布产品

28.4.1     填写应用信息

28.4.2     上传并描述您的程序包

本章小结

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

29.1 苹果的App Store

29.2 iOS设备测试

29.2.1     创建开发者证书

29.2.2     设备注册

29.2.3     创建App ID

29.2.4     创建配置概要文件

29.2.5     设备上运行

29.3 还有“最后一公里”

29.3.1     添加图标

29.3.2     添加启动界面

29.3.3     修改发布产品属性

29.3.4     为发布进行编译

29.3.5     应用打包

29.4 发布产品

29.4.1     创建应用及基本信息

29.4.2     应用定价信息

29.4.3     基本信息输入

29.4.4     上传应用前准备

29.4.5     上传应用

29.5 常见审核不通过的原因

29.5.1     功能问题

29.5.2     用户界面问题

29.5.3     商业问题

29.5.4     不当内容

29.5.5     其它问题

本章小结

时间: 2024-09-30 09:03:09

《Cocos2d-x实战(卷Ⅰ):C++开发》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: