目錄
序(王哲)Ⅰ
前言Ⅲ
第1章準備開始
1.1本書學習路線圖
1.2如何使用實例代碼
基礎篇
第2章Cocos2dx簡介與環境搭建
2.1移動平臺游戲引擎簡介
2.2Cocos2d家譜
2.3Cocos2dx設計目標
2.4在Windows平臺下開發Cocos2dx游戲
2.4.1使用Visual Studio開發工具
2.4.2下載和使用Cocos2dx案例
2.4.3生成API文檔
本章小結
第3章Hello Cocos2dx
3.1**個Cocos2dx游戲
3.1.1創建工程
3.1.2工程文件結構
3.1.3代碼解釋
3.2Cocos2dx核心概念
3.2.1導演
3.2.2場景
3.2.3層
3.2.4精靈
3.2.5菜單
3.3Node與Node層級架構
3.3.1Node中重要的操作
3.3.2Node中重要的屬性
3.3.3游戲循環與調度
3.4Cocos2dx坐標系
3.4.1UI坐標
3.4.2OpenGL坐標
3.4.3世界坐標和模型坐標
3.4.4Win32平臺下設置屏幕
本章小結
第4章字符串、標簽和菜單
4.1Cocos2dx中的字符串
4.1.1使用const char*和std::string
4.1.2使用cocos2d::String
4.1.3Win32平臺下中文亂碼問題
4.2使用標簽
4.2.1使用標簽類Label
4.2.2位圖字體
4.2.3圖片集標簽
4.2.4標簽中文無法顯示問題
4.3使用菜單
4.3.1文本菜單
4.3.2精靈菜單和圖片菜單
4.3.3開關菜單
本章小結
第5章精靈
5.1Sprite精靈類
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章Cocos2dx用戶事件
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.1Cocos2dx中音頻文件
9.1.1音頻文件介紹
9.1.2Cocos2dx跨平臺音頻支持
9.2使用Audio引擎
9.2.1音頻文件的預處理
9.2.2播放背景音樂
9.2.3停止播放背景音樂
9.2.4背景音樂播放暫停與繼續
9.3實例: 設置背景音樂與音效
9.3.1AppDelegate實現
9.3.2HelloWorld場景實現
9.3.3設置場景實現
本章小結
第10章粒子系統
10.1問題的提出
10.2粒子系統基本概念
10.2.1實例: 打火機
10.2.2粒子發射模式
10.2.3粒子系統屬性
10.3Cocos2dx內置粒子系統
10.3.1內置粒子系統
10.3.2實例: 內置粒子系統
10.4自定義粒子系統
10.4.1代碼創建
10.4.2plist文件創建
本章小結
第11章瓦片地圖
11.1地圖性能問題
11.2Cocos2dx中瓦片地圖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.2Cocos2dx 3.x中物理引擎封裝
12.2.1Cocos2dx 3.x物理引擎API
12.2.2實例: HelloPhysicsWorld
12.2.3實例: 接觸與碰撞檢測
12.2.4實例: 使用關節
12.3Box2D引擎
12.3.1Box2D核心概念
12.3.2使用Box2D物理引擎的一般步驟
12.3.3實例: HelloBox2D
12.3.4實例: 接觸與碰撞檢測
12.3.5實例: 使用關節
本章小結
第13章Cocos2dx GUI控件
13.1按鈕
13.2ImageView
13.3文本控件
13.3.1Text
13.3.2TextBMFont
13.3.3RichText
13.4RadioButton和RadioButtonGroup
13.5CheckBox
13.6LoadingBar
13.7滑塊控件
本章小結
第14章Cocos2dx中的3D特性
14.1一些3D概念
14.1.1網格和模型
14.1.2相機
14.1.3投影
14.2使用3D精靈
14.2.1創建Sprite3D對象
14.2.2實例: 使用模型和紋理Sprite3D對象
14.33D模型文件格式
14.4使用相機
14.4.1創建和設置Camera對象
14.4.2實例: 使用Camera對象
14.53D粒子系統
14.5.1創建PUParticleSystem3D對象
14.5.2實例: 創建Particle Universe
3D粒子
本章小結
數據與網絡篇
第15章Cocos2dx數據結構
15.1Cocos2dx中兩大類——Ref和Value
15.1.1Cocos2dx根類Ref
15.1.2包裝類Value
15.2Ref列表結構
15.2.1Array結構
15.2.2實例: Array結構
15.2.3VectorT結構
15.2.4實例: Vector結構
15.3Ref字典結構
15.3.1Dictionary結構
15.3.2實例: Dictionary結構
15.3.3MapK,V結構
15.3.4實例: MapK,V結構
15.4Value列表結構——ValueVector
15.4.1ValueVector常用API
15.4.2實例: 使用ValueVector結構
15.5Value字典結構——ValueMap和ValueMapIntKey
15.5.1ValueMap和ValueMapIntKey常用API
15.5.2實例: 使用ValueMap結構
本章小結
第16章數據持久化
16.1使用FileUtils訪問文件
16.1.1Cocos2dx中的目錄
16.1.2實例: 文件讀寫
16.1.3實例: 路徑搜索
16.2持久化概述
16.3UserDefault數據持久化
16.3.1UserDefaultAPI
16.3.2實例: 保存背景音樂和音效設置
16.4屬性列表數據持久化
16.4.1屬性列表概述
16.4.2實例: MyNotes
16.4.3使用Dictionary讀寫屬性列表文件
16.4.4使用ValueMap讀寫屬性列表文件
16.4.5使用ValueVector讀取屬性列表文件
16.5SQLite數據庫數據持久化
16.5.1SQLite數據庫介紹
16.5.2Visual Studio下SQLite數據庫開發環境設置
16.5.3實例: 重構MyNotes
16.5.4創建數據庫
16.5.5SQLite數據庫管理工具
16.5.6查詢數據
16.5.7修改數據
本章小結
第17章數據交換格式
17.1CSV數據交換格式
17.1.1文檔結構
17.1.2CSV格式解碼
17.2XML數據交換格式
17.2.1文檔結構
17.2.2SAX解析
17.2.3DOM解析
17.3JSON數據交換格式
17.3.1文檔結構
17.3.2JSON框架jsoncpp和rapidjson比較
17.3.3實例: rapidjson解碼
17.3.4實例: rapidjson編碼
本章小結
第18章基于HTTP的網絡通信
18.1網絡結構
18.1.1客戶端服務器結構網絡
18.1.2點對點結構網絡
18.2HTTP與HTTPS協議
18.3使用cURL開發客戶端
18.3.1cURL與libcurl庫
18.3.2Visual Studio下libcurl庫開發環境設置
18.3.3實例: 重構MyNotes
18.4使用HttpClient開發客戶端
18.4.1HttpClientAPI
18.4.2Visual Studio下HttpClient開發環境設置
18.4.3實例: 重構MyNotes
本章小結
第19章基于Node.js的Socket.IO網絡通信
19.1Node.js
19.1.1Node.js安裝
19.1.2Node.js測試
19.2使用Socket.IO
19.2.1Socket.IO服務器端開發
19.2.2Cocos2dx的Socket.IO客戶端
本章小結
設計與優化篇
第20章Cocos2dx中的常用設計模式
20.1單例設計模式
20.1.1問題提出
20.1.2實現原理
20.1.3應用案例
20.2委托設計模式
20.2.1問題提出
20.2.2實現原理
20.2.3應用案例
20.3觀察者設計模式與通知機制
20.3.1問題提出
20.3.2實現原理
20.3.3通知機制
本章小結
第21章Cocos2dx中的內存管理
21.1C 內存管理
21.1.1內存分配區域
21.1.2動態內存分配
21.2Ref內存管理
21.2.1內存引用計數
21.2.2自動釋放池
21.2.3Ref內存管理規則
21.3Ref內存管理設計模式
21.3.1使用靜態構造函數
21.3.2使用訪問器
21.4其他類型內存管理
21.4.1Value內存管理
21.4.2VectorT和MapK,V內存管理
本章小結
第22章性能優化
22.1工具
22.1.1Xcode中Instruments工具使用
22.1.2使用Windows任務管理器
22.1.3Visual Studio內存泄漏檢測工具——Visual
Leak Detector
22.1.4左下角的文字是什么
22.2使用SpriteBatchNode批次渲染
22.3合理使用緩存
22.3.1場景與資源
22.3.2緩存創建和清除時機
22.4圖片與紋理優化
22.4.1選擇圖片格式
22.4.2拼圖
22.4.3紋理像素格式
22.4.4紋理緩存異步加載
22.4.5背景圖片優化
22.5聲音優化
22.5.1聲音格式優化
22.5.2聲音預處理與清除
22.6多線程并發訪問
22.6.1std::thread多線程技術
22.6.2異步預處理聲音
22.7SQLite數據庫優化
22.7.1表結構優化
22.7.2查詢優化
22.7.3插入(或刪除)優化
22.8數據交換格式優化
本章小結
平臺移植篇
第23章從Win32平臺到Android平臺移植
23.1搭建交叉編譯和打包環境
23.1.1Android SDK安裝
23.1.2管理Android SDK
23.1.3管理Android開發模擬器
23.1.4Android NDK安裝
23.1.5設置環境變量
23.2交叉編譯、打包和運行
23.2.1使用cocos命令行工具
23.2.2Android.mk編譯文件
23.3移植問題匯總
23.3.1中文亂碼問題
23.3.2SQLite3數據庫移植問題
23.3.3JSON框架rapidjson移植問題
23.3.4libcurl庫移植問題
23.3.5libNetwork庫移植問題
23.3.6橫屏與豎屏設置問題
本章小結
第24章從Win32平臺到iOS平臺移植
24.1iOS開發環境搭建
24.1.1Xcode安裝和卸載
24.1.2Xcode操作界面
24.2從Visual Studio工程到Xcode工程
24.2.1添加源文件
24.2.2添加資源文件
24.2.3Xcode中編譯并運行
24.3移植問題匯總
24.3.1中文亂碼問題
24.3.2SQLite3數據庫移植問題
24.3.3JSON框架rapidjson移植問題
24.3.4libcurl庫移植問題
24.3.5聲音移植問題
24.3.6使用PVR紋理格式
24.3.7橫屏與豎屏設置問題
本章小結
第25章Cocos2dx多分辨率屏幕適配
25.1屏幕適配問題的提出
25.2Cocos2dx屏幕適配
25.2.1三種分辨率
25.2.2分辨率適配策略
25.2.3紋理圖集資源適配
25.2.4瓦片地圖資源適配
本章小結
實戰篇
第26章使用Git管理程序代碼版本
26.1代碼版本管理工具——Git
26.1.1版本控制歷史
26.1.2術語和基本概念
26.1.3Git環境配置
26.1.4Git常用命令
26.2代碼托管服務——GitHub
26.2.1創建和配置GitHub賬號
26.2.2創建代碼庫
26.2.3刪除代碼庫
26.2.4派生代碼庫
26.2.5GitHub協同開發
26.3實例: Cocos2dx游戲項目協同開發
26.3.1提交到GitHub代碼庫
26.3.2克隆GitHub代碼庫
26.3.3重新獲得GitHub代碼庫
本章小結
第27章Cocos2dx敏捷開發項目實戰——迷失航線手機游戲
27.1迷失航線游戲分析與設計
27.1.1迷失航線故事背景
27.1.2需求分析
27.1.3原型設計
27.1.4游戲腳本
27.2任務1: 游戲工程的創建與初始化
27.2.1迭代1.1: 創建工程
27.2.2迭代1.2: 多分辨率支持
27.2.3迭代1.3: 通用類與基類維護
27.2.4迭代1.4: 發布到GitHub
27.3任務2: 創建Loading場景
27.3.1迭代2.1: 添加場景和層
27.3.2迭代2.2: Loading動畫
27.3.3迭代2.3: 異步加載紋理緩存
27.3.4迭代2.4: 異步預處理聲音
27.4任務3: 創建Home場景
27.4.1迭代3.1: 添加場景和層
27.4.2迭代3.2: 添加菜單
27.5任務4: 創建設置場景
27.6任務5: 創建幫助場景
27.7任務6: 游戲場景實現
27.7.1迭代6.1: 創建敵人精靈
27.7.2迭代6.2: 創建玩家飛機精靈
27.7.3迭代6.3: 創建炮彈精靈
27.7.4迭代6.4: 初始化游戲場景
27.7.5迭代6.5: 游戲場景菜單實現
27.7.6迭代6.6: 玩家飛機發射炮彈
27.7.7迭代6.7: 炮彈與敵人的接觸檢測
27.7.8迭代6.8: 玩家飛機與敵人的接觸檢測
27.7.9迭代6.9: 玩家飛機生命值顯示
27.7.10迭代6.10: 顯示玩家得分情況
27.8任務7: 游戲結束場景
本章小結
第28章把迷失航線游戲發布到Google play應用商店
28.1谷歌Android應用商店Google
play
28.2Android設備測試
28.3還有“*后一公里”
28.3.1添加圖標
28.3.2生成數字簽名文件
28.3.3應用程序打包
28.4發布產品
28.4.1上傳APK
28.4.2填寫商品詳細信息
28.4.3定價和發布范圍
本章小結
第29章把迷失航線游戲發布到蘋果App Store
29.1蘋果的App Store
29.2還有“*后一公里”
29.2.1添加圖標
29.2.2添加啟動界面
29.2.3修改發布產品屬性
29.3iOS設備測試
29.3.1Xcode設置
29.3.2設備設置
29.4為發布進行編譯
29.4.1創建開發者證書
29.4.2創建App ID
29.4.3創建描述文件
29.4.4發布編譯
29.5發布上架
29.5.1創建應用
29.5.2應用定價
29.5.3基本信息輸入
29.5.4上傳應用
29.5.5提交審核
29.6常見審核通不過的原因
29.6.1功能問題
29.6.2用戶界面問題
29.6.3商業問題
29.6.4不當內容
29.6.5其他問題
本章小結