《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.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.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.3
使用菜单
4.3.1
文本菜单
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.2
特效
7.2.1
网格动作
7.2.2
实例:特效演示
7.3
动画
7.3.1
帧动画
7.3.2
实例:帧动画使用
本章小结
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.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.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.5.3
实例:重构MyNotes
14.5.4
创建数据库
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.3
实例:重构MyNotes
16.4
使用HttpClient
开发客户端
16.4.1 HttpClientAPI
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.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.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.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.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.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.3
移植问题汇总
23.3.1
中文乱码问题
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.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.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.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.1
使用谷歌AdMob
广告
26.1.1
注册AdMob
账号
26.1.2
管理AdMob
广告
26.1.3 AdMob
广告类型
26.1.4
下载谷歌AdMob Ads SDK
26.2.1 Cocos2d-x
引擎Android
平台下AdMob
开发环境搭建
26.2.2
编写AdMob
相关代码
26.2.3
交叉编译与打包运行
26.3.1 Cocos2d-x
引擎Windows Phone 8
平台下AdMob
开发环境搭建
26.3.2
编写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.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.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
其它问题
本章小结