本書系統介紹了Cocos2dx游戲編程和開發技術,介紹了使用Cocos2dxJS API中核心類、瓦片地圖、物理引擎、音樂音效、Cocos2dx GUI控件、Cocos2dx中的3D特性、數據持久化、網絡通信、性能優化、多平臺發布、程序代碼管理、兩大應用商店發布產品。
全書分為6篇: 基礎篇、進階篇、數據與網絡篇、優化篇、多平臺發布篇和實戰篇。
基礎篇包括第2章~第9章,介紹了JavaScript語言基礎、Cocos2dx介紹、環境搭建、標簽、菜單、精靈、場景、層、動作、特效、動畫和用戶事件。
進階篇包括第10章~第15章,介紹了游戲音樂與音效、粒子系統、瓦片地圖、物理引擎、Cocos2dx GUI控件和Cocos2dx中的3D特性。
數據與網絡篇包括第16章~第18章,介紹了數據持久化、基于HTTP網絡通信和基于Node.js的Socket.IO網絡通信。
優化篇包括第19章性能優化。
多平臺發布篇包括第20章~第22章,介紹了發布到Web平臺、發布到本地Android平臺和發布到本地iOS平臺。
實戰篇包括第23章~第26章,介紹了使用Git管理代碼版本、項目實戰: 迷失航線手機游戲、發布到Google play應用商店和發布到蘋果App Store。
本書是在《Cocos2d-x實戰:JS卷Cocos2d-JS開發》基礎上的升級,增加了*的Cocos2d-x JS API的支持,增加了Cocos2d-x的3D特性和GUI控件內容,全書分為六篇:基礎篇、進階篇、數據與網絡篇、優化篇、多平臺發布篇和實戰篇。從JavaScript基礎語言開始,介紹了Cocos2d-x核心概念、瓦片地圖、物理引擎、音樂音效、GUI控件、3D特性、數據持久化、網絡通信、性能優化、多平臺發布和程序代碼管理,*后是項目實戰,介紹迷失航線手機游戲開發過程,并且如何將該游戲上架到Google play和蘋果App Store應用商店。本書不僅適合于企業一線開發人員學習和參考,也同樣適合于廣大高校老師和學生學習Cocos2d-x JS API開發。配套資源:本書配套提供源代碼下載、勘誤和技術支持,網址見書中前言。
前言
Cocos2dx實戰系列圖書第1版出版后,得到業界一致好評,隨著Cocos2dx版本的變化,很多API有了較大變化,很多讀者希望我們升級Cocos2dx實戰系列圖書。經過幾個月努力,我們終于在2016年7月完成初稿,幾個月來,智捷iOS課堂團隊夜以繼日,幾乎推掉一切社交活動,放棄很多企業邀請我去講課的機會,全力編寫此書。每一個文字、每一個圖片、每一個實例都是我們的嘔心之作。這次Cocos2dx實戰系列圖書升級包括如下4本書: 《Cocos2dx實戰: C 卷》(第2版) 《Cocos2dx實戰: JS卷Cocos2dJS開發》(第2版) 《Cocos2dx實戰: Lua卷》(第2版) 《Cocos2dx實戰: 工具卷》(第2版)本書是Cocos2dx游戲引擎JS卷,就是使用JavaScript語言進行Cocos2dx開發API。關于本書的更多內容請讀者關注智捷課堂官方網站http://www.51work6.com。關于源代碼為了更好地為廣大讀者提供服務,我們專門為本書建立的一個網站,網址為: http://www.51work6.com/book/cocos22.php,大家可以查看相關出版進度,并對書中內容發表評論,提出寶貴意見。勘誤與支持我們在網站http://www.51work6.com/book/cocos22.php中建立了一個勘誤專區,及時地把書中的問題、失誤和糾正反饋給廣大讀者,您發現了問題可以在網上留言,也可以發送電子郵件到: eorient@sina.com,我們會在第一時間回復您,也可以在新浪微博中與我們聯系: @tony_關東升。致謝本書主要由關東升編寫。此外,智捷課堂團隊的趙大羽、趙志榮、關錦華也參與了部分內容的寫作。在此感謝清華大學出版社的盛東亮編輯給我們提供了寶貴的意見。感謝趙大羽老師手繪了書中全部草圖,并從專業的角度修改書中圖片,力求更加真實完美地奉獻給廣大讀者。感謝我的家人對我的關心和照顧,使我能投入全部精力專心編寫此書。由于時間倉促,書中難免存在不妥之處,請讀者原諒,并提出寶貴意見。
關東升2017年1月于北京
關東升
國內知名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
序(二)3
前言5
第1章準備開始
1.1本書學習路線圖
1.2使用實例代碼
第一篇基礎篇
第2章JavaScript語言基礎
2.1環境搭建
2.1.1JavaScript編輯工具
2.1.2JavaScript運行測試環境
2.1.3HelloJS實例測試
2.2標識符和保留字
2.2.1標識符
2.2.2保留字
2.3常量和變量
2.3.1常量
2.3.2變量
2.3.3命名規范
2.4注釋
2.5JavaScript數據類型
2.5.1數據類型
2.5.2數據類型字面量
2.5.3數據類型轉換
2.6運算符
2.6.1算術運算符
2.6.2關系運算符
2.6.3邏輯運算符
2.6.4位運算符
2.6.5其他運算符
2.7控制語句
2.7.1分支語句
2.7.2循環語句
2.7.3跳轉語句
2.8數組
2.9函數
2.9.1使用函數
2.9.2變量作用域
2.9.3嵌套函數
2.9.4返回函數
2.10JavaScript中的面向對象
2.10.1創建對象
2.10.2常用內置對象
2.10.3原型
2.11Cocos2dx JS API中JavaScript繼承
本章小結
第3章Cocos2dx JS API與環境搭建
3.1移動平臺游戲引擎介紹
3.2Cocos2d家譜
3.3Cocos2dx設計目標
3.4搭建Cocos2dx JS API開發環境
3.4.1搭建WebStorm開發環境
3.4.2安裝Visual Studio開發工具
3.4.3下載和使用Cocos2dx JS API官方案例
3.4.4配置Cocos2dx環境
3.4.5使用API文檔
本章小結
第4章Hello Cocos2dx
4.1第一個Cocos2dx JS API游戲
4.1.1創建工程
4.1.2工程文件結構
4.1.3代碼解釋
4.1.4本地方式運行
4.1.5調試本地代碼
4.1.6Web方式運行
4.2Cocos2dx核心概念
4.2.1導演
4.2.2場景
4.2.3層
4.2.4精靈
4.2.5菜單
4.3Node與Node層級架構
4.3.1Node中重要的操作
4.3.2Node中重要的屬性
4.3.3游戲循環與調度
4.4Cocos2dx坐標系
4.4.1UI坐標
4.4.2OpenGL坐標
4.4.3世界坐標和模型坐標
本章小結
第5章標簽和菜單
5.1使用標簽
5.1.1cc.LabelTTF
5.1.2cc.LabelAtlas
5.1.3cc.LabelBMFont
5.2使用菜單
5.2.1文本菜單
5.2.2精靈菜單和圖片菜單
5.2.3開關菜單
本章小結
第6章精靈
6.1Sprite精靈類
6.1.1創建Sprite精靈對象
6.1.2實例: 使用紋理對象創建Sprite對象
6.2精靈的性能優化
6.2.1使用紋理圖集
6.2.2使用精靈幀緩存
本章小結
第7章場景與層
7.1場景與層的關系
7.2場景切換
7.2.1場景切換相關函數
7.2.2場景過渡動畫
7.3場景的生命周期
7.3.1生命周期函數
7.3.2多場景切換生命周期
本章小結
第8章動作、特效和動畫
8.1動作
8.1.1瞬時動作
8.1.2間隔動作
8.1.3組合動作
8.1.4動作速度控制
8.1.5回調函數
8.2特效
8.2.1網格動作
8.2.2實例: 特效演示
8.3動畫
8.3.1幀動畫
8.3.2實例: 幀動畫使用
本章小結
第9章用戶事件
9.1事件處理機制
9.1.1事件處理機制中三個角色
9.1.2事件管理器
9.2觸摸事件
9.2.1觸摸事件的時間方面
9.2.2觸摸事件的空間方面
9.2.3實例: 單點觸摸事件
9.2.4實例: 多點觸摸事件
9.3鍵盤事件
9.4鼠標事件
9.5加速度計與加速度事件
9.5.1加速度計
9.5.2實例: 運動的小球
本章小結
第二篇進階篇
第10章游戲背景音樂與音效
10.1Cocos2dx JS API中音頻文件
10.1.1音頻文件介紹
10.1.2Cocos2dx JS API跨平臺音頻支持
10.2使用AudioEngine引擎
10.2.1音頻文件的預處理
10.2.2播放背景音樂
10.2.3停止播放背景音樂
10.3實例: 設置背景音樂與音效
10.3.1資源文件編寫
10.3.2HelloWorld場景實現
10.3.3設置場景實現
本章小結
第11章粒子系統
11.1問題的提出
11.2粒子系統基本概念
11.2.1實例: 打火機
11.2.2粒子發射模式
11.2.3粒子系統屬性
11.3內置粒子系統
11.3.1內置粒子系統
11.3.2實例: 內置粒子系統
11.4自定義粒子系統
本章小結
第12章瓦片地圖
12.1地圖性能問題
12.2Cocos2dx JS中瓦片地圖API
12.3實例: 忍者無敵
12.3.1設計地圖
12.3.2程序中加載地圖
12.3.3移動精靈
12.3.4檢測碰撞
12.3.5滾動地圖
本章小結
第13章物理引擎
13.1使用物理引擎
13.2Chipmunk引擎
13.2.1Chipmunk核心概念
13.2.2使用Chipmunk物理引擎的一般步驟
13.2.3實例: HelloChipmunk
13.2.4實例: 碰撞檢測
13.2.5實例: 使用關節
本章小結
第14章Cocos2dx GUI控件
14.1按鈕
14.2ImageView
14.3文本控件
14.3.1Text
14.3.2TextBMFont
14.4CheckBox
14.5LoadingBar
14.6滑塊控件
本章小結
第15章Cocos2dx中的3D特性
15.1一些3D概念
15.1.1網格和模型
15.1.2相機
15.1.3投影
15.2使用3D精靈
15.2.1創建Sprite3D對象
15.2.2實例: 使用模型和紋理Sprite3D對象
15.33D模型文件格式
15.4使用相機
15.4.1創建和設置Camera對象
15.4.2實例: 使用Camera對象
15.53D粒子系統
15.5.1創建PUParticleSystem3D對象
15.5.2實例: 創建Particle Universe
3D粒子
本章小結
第三篇數據與網絡篇
第16章數據持久化
16.1Cocos2dx API JS中的數據持久化
16.2localStorage數據持久化
16.2.1cc.sys.localStorage API函數
16.2.2實例: MyNotes
本章小結
第17章基于HTTP的網絡通信
17.1網絡結構
17.1.1客戶端服務器結構網絡
17.1.2點對點結構網絡
17.2HTTP與HTTPS協議
17.3使用XMLHttpRequest對象開發客戶端
17.3.1使用XMLHttpRequest對象
17.3.2實例: 重構MyNotes
17.4數據交換格式
17.5JSON數據交換格式
17.5.1文檔結構
17.5.2JSON解碼與編碼
17.5.3實例: 完善MyNotes
本章小結
第18章基于Node.js的Socket.IO網絡通信
18.1Node.js
18.1.1Node.js安裝
18.1.2Node.js測試
18.2使用Socket.IO
18.2.1Socket.IO服務器端開發
18.2.2Cocos2dx JS API的Socket.IO客戶端
本章小結
第四篇優化篇
第19章性能優化
19.1緩存創建和清除緩存
19.1.1場景與資源
19.1.2緩存創建和清除時機
19.2圖片與紋理優化
19.2.1選擇圖片格式
19.2.2拼圖
19.2.3紋理像素格式
19.2.4背景圖片優化
19.2.5紋理緩存異步加載
19.3JSB內存管理
19.4使用Bake層
19.5使用對象池
19.5.1對象池API
19.5.2實例: 發射子彈
本章小結
第五篇多平臺發布篇
第20章移植到Web平臺
20.1Web服務器與移植
20.1.1Apache HTTP Server安裝
20.1.2移植到Web服務器
20.2問題匯總
20.2.1JS文件的壓縮與代碼混淆
20.2.2判斷平臺
20.2.3資源不能加載問題
本章小結
第21章移植到本地Android平臺
21.1搭建交叉編譯和打包環境
21.1.1Android SDK安裝
21.1.2管理Android SDK
21.1.3管理Android開發模擬器
21.1.4Android NDK安裝
21.1.5設置環境變量
21.2交叉編譯、打包和運行
21.2.1使用cocos命令行工具
21.2.2Android.mk編譯文件
21.3移植問題匯總
21.3.1JavaScript文件編譯問題
21.3.2橫屏與豎屏設置問題
本章小結
第22章移植到本地iOS平臺
22.1iOS開發環境搭建
22.1.1Xcode安裝和卸載
22.1.2Xcode操作界面
22.2編譯與運行
22.3移植問題匯總
22.3.1iOS平臺聲音移植問題
22.3.2使用PVR紋理格式
22.3.3橫屏與豎屏設置問題
22.4多分辨率屏幕適配
22.4.1問題的提出
22.4.2分辨率策略
本章小結
第六篇實戰篇
第23章使用Git管理程序代碼版本
23.1代碼版本管理工具Git
23.1.1版本控制歷史
23.1.2術語和基本概念
23.1.3Git環境配置
23.1.4Git常用命令
23.2代碼托管服務GitHub
23.2.1創建和配置GitHub賬號
23.2.2創建代碼庫
23.2.3刪除代碼庫
23.2.4派生代碼庫
23.2.5GitHub協同開發
23.3實例: Cocos2dx游戲項目協同開發
23.3.1提交到GitHub代碼庫
23.3.2克隆GitHub代碼庫
23.3.3重新獲得GitHub代碼庫
本章小結
第24章Cocos2dx JS API敏捷開發項目實戰迷失航線手機游戲
24.1迷失航線游戲分析與設計
24.1.1迷失航線故事背景
24.1.2需求分析
24.1.3原型設計
24.1.4游戲腳本
24.2任務1: 游戲工程的創建與初始化
24.2.1迭代1.1: 創建工程
24.2.2迭代1.2: 添加資源文件
24.2.3迭代1.3: 添加常量文件SystemConst.js
24.2.4迭代1.4: 多分辨率適配
24.2.5迭代1.5: 配置文件resource.js
24.2.6迭代1.6: 發布到GitHub
24.3任務2: 創建Home場景
24.3.1迭代2.1: 添加場景和層
24.3.2迭代2.2: 添加菜單
24.4任務3: 創建設置場景
24.5任務4: 創建幫助場景
24.6任務5: 游戲場景實現
24.6.1迭代5.1: 創建敵人精靈
24.6.2迭代5.2: 創建玩家飛機精靈
24.6.3迭代5.3: 創建炮彈精靈
24.6.4迭代5.4: 初始化游戲場景
24.6.5迭代5.5: 游戲場景菜單實現
24.6.6迭代5.6: 玩家飛機發射炮彈
24.6.7迭代5.7: 炮彈與敵人的碰撞檢測
24.6.8迭代5.8: 玩家飛機與敵人的碰撞檢測
24.6.9迭代5.9: 玩家飛機生命值顯示
24.6.10迭代5.10: 顯示玩家得分情況
24.7任務6: 游戲結束場景
本章小結
第25章把迷失航線游戲發布到Google play 應用商店
25.1谷歌Android應用商店Google
play
25.2還有最后一公里
25.2.1JavaScript文件編譯
25.2.2添加圖標
25.2.3生成數字簽名文件
25.2.4應用程序打包
25.3發布產品
25.3.1上傳APK
25.3.2填寫商品詳細信息
25.3.3定價和發布范圍
本章小結
第26章把迷失航線游戲發布到蘋果App Store
26.1蘋果的App Store
26.2還有最后一公里
26.2.1添加圖標
26.2.2添加啟動界面
26.2.3修改發布產品屬性
26.3iOS設備測試
26.3.1Xcode設置
26.3.2設備設置
26.4為發布進行編譯
26.4.1創建開發者證書
26.4.2創建App ID
26.4.3創建描述文件
26.4.4發布編譯
26.5發布上架
26.5.1創建應用
26.5.2應用定價
26.5.3基本信息輸入
26.5.4上傳應用
26.5.5提交審核
26.6常見審核不通過的原因
26.6.1功能問題
26.6.2用戶界面問題
26.6.3商業問題
26.6.4不當內容
26.6.5其他問題
本章小結