Cocos2d-x實戰:C++卷第二版

Cocos2d-x實戰:C++卷第二版

《Cocos2d-x實戰:C++卷第二版》 2017年2月清華大學出版社出版,作者關東升

內容簡介

Cocos2d-x實戰:C++卷(第2版)(清華遊戲開發叢書)系統介紹了基於C++語言的Cocos2dx遊戲編程和開發技術。介紹了使用Cocos2dx中的核心類、瓦片地圖、物理引擎、音樂音效、數據持久化、GUI控制項、3D特性、網路通信、數據交換格式、記憶體管理、性能最佳化、平台移植、代碼版本管理以及套用商店發布產品。
全書分為六篇: 基礎篇、進階篇、數據與網路篇、設計與最佳化篇、平台移植篇和實戰篇。
基礎篇是第2章~第8章,內容包括: Cocos2dx簡介、環境搭建、字元串、標籤、選單、精靈、場景、層、動作、特效、動畫和Cocos2dx用戶事件。
進階篇是第9章~第14章,內容包括: 遊戲音樂與音效、粒子系統、瓦片地圖、物理引擎、Cocos2dx GUI控制項和Cocos2dx中的3D特性。
數據與網路篇是第15章~第19章,內容包括: Cocos2dx數據結構、數據持久化、數據交換格式、基於HTTP的網路通信和基於Node.js的Socket.IO網路通信。
設計與最佳化篇是第20章~第22章,內容包括: Cocos2dx中的常用設計模式、Cocos2dx中的記憶體管理和數據性能最佳化。
平台移植篇是第23章~第25章,內容包括: 從Win32平台到Android平台移植、從Win32平台到iOS平台移植和Cocos2dx多解析度螢幕適配。
實戰篇是第26章~第29章,內容包括: 使用Git管理程式代碼版本、項目實戰——迷失航線手機遊戲、把迷失航線遊戲發布到Google play、發布到蘋果App Store。

作者簡介

關東升,國內知名iOS技術作家,iOS技術顧問,高級培訓講師,移動開發專家。擔任51CTO社區iOS技術顧問,精通iOS、Android、Windows Phone及HTML5等移動開發技術。曾先後主持開發大型網路遊戲《神農訣》的iOS和Android客戶端開發,國家農產品追溯系統的iPad客戶端開發,酒店預訂系統的iOS客戶端開發,金融系統的iOS、Windows Phone 及Android客戶端開發。在App Store上發布數款遊戲和套用軟體,擅長移動平台的套用和遊戲類項目開發。長期為中國移動研究院、雲南移動、東軟、方正科技、大唐電信、中石油、深圳康拓普、上海財富168、天津港務局等企事業單位授課。著有《iOS實戰:入門與提高卷(Swift版)》《iOS實戰:感測器卷(Swift版)》《iOS實戰:圖形圖像、動畫和多媒體卷(Swift版)》《iOS開發指南——從零基礎到App Store上架》《互動設計的藝術——iOS 7擬物化到扁平化革命》《Cocos2d-x實戰:C++卷(第2版)》《Cocos2d-x實戰:Lua卷(第2版)》《Cocos2d-x實戰:JS卷——Cocos2d-JS開發(第2版)》《Cocos2d-x實戰:工具卷(第2版)》等專業圖書。

圖書目錄

目錄
序(王哲)Ⅰ
前言Ⅲ
第1章準備開始
1.1本書學習路線圖
1.2如何使用實例代碼
基礎篇
第2章Cocos2dx簡介與環境搭建
2.1移動平台遊戲引擎簡介
2.2Cocos2d家譜
2.3Cocos2dx設計目標
2.4在Windows平台下開發Cocos2dx遊戲
2.4.1使用Visual Studio開發工具
2.4.2下載和使用Cocos2dx案例
2.4.3生成API文檔
本章小結
第3章Hello Cocos2dx
3.1個Cocos2dx遊戲
3.1.1創建工程
3.1.2工程檔案結構
3.1.3代碼解釋
3.2Cocos2dx核心概念
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.4Cocos2dx坐標系
3.4.1UI坐標
3.4.2OpenGL坐標
3.4.3世界坐標和模型坐標
3.4.4Win32平台下設定螢幕
本章小結
第4章字元串、標籤和選單
4.1Cocos2dx中的字元串
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章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.1Cocos2dx中音頻檔案
9.1.1音頻檔案介紹
9.1.2Cocos2dx跨平台音頻支持
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.3Cocos2dx內置粒子系統
10.3.1內置粒子系統
10.3.2實例: 內置粒子系統
10.4自定義粒子系統
10.4.1代碼創建
10.4.2plist檔案創建
本章小結
第11章瓦片地圖
11.1地圖性能問題
11.2Cocos2d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.2Cocos2dx 3.x中物理引擎封裝
12.2.1Cocos2dx 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章Cocos2dx 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章Cocos2dx中的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 Universe3D粒子
本章小結
數據與網路篇
第15章Cocos2dx數據結構
15.1Cocos2dx中兩大類——Ref和Value
15.1.1Cocos2dx根類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.1Cocos2dx中的目錄
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章基於的網路通信
18.1網路結構
18.1.1客戶端伺服器結構網路
18.1.2點對點結構網路
18.2與S協定
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.2Cocos2dx的Socket.IO客戶端
本章小結
設計與最佳化篇
第20章Cocos2dx中的常用設計模式
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章Cocos2dx中的記憶體管理
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記憶體泄漏檢測工具——VisualLeak 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章Cocos2dx多解析度螢幕適配
25.1螢幕適配問題的提出
25.2Cocos2dx螢幕適配
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實例: Cocos2dx遊戲項目協同開發
26.3.1提交到GitHub代碼庫
26.3.2克隆GitHub代碼庫
26.3.3重新獲得GitHub代碼庫
本章小結
第27章Cocos2dx敏捷開發項目實戰——迷失航線手機遊戲
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套用商店Googleplay
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其他問題

相關詞條

相關搜尋

熱門詞條

聯絡我們