前言
第一部分 基礎篇
第1章 認識Cocos2D-X / 2
1.1 什麼是Cocos2D / 2
1.1.1 Cocos2D的特點 / 2
1.1.2 Cocos2D的主要功能 / 3
1.1.3 Cocos2D的應用 / 5
1.2 什麼是Cocos2D-X / 6
1.2.1 Cocos2D-X的特點 / 6
1.2.2 Cocos2D-X的主要功能 / 6
1.2.3 “百花齊放”的輔助工具鏈 / 7
1.2.4 Cocos2D-X主導的3.0時代 / 8
1.2.5 Cocos2D-X的應用 / 9
1.3 Cocos2D-X與Cocos2D-iPhone的比較 / 10
1.4 本章小結 / 12
第2章 搭建跨平颱的開發環境 / 13
2.1 Cocos2D-X的安裝和配置 / 13
2.1.1 Cocos2D-X的運行編譯環境 / 13
2.1.2 需要安裝或配置的工具 / 14
2.2 Cocos2D-X代碼集成調試工具Cocos Code IDE / 15
2.2.1 安裝和配置 / 15
2.2.2 在Cocos Code IDE中調試代碼 / 15
2.3 搭建Windows開發環境 / 19
2.4 搭建Android開發環境 / 20
2.4.1 編譯和運行 / 21
2.4.2 Cocos2D-X的工程目錄介紹 / 25
2.5 搭建iOS開發環境 / 27
2.6 Cocos2D-X調試 / 28
2.6.1 Visual Studio的調試方法 / 28
2.6.2 Eclipse的調試方法 / 28
2.6.3 Xcode的調試方法 / 31
2.7 多語言混編Cocos2D-X / 35
2.7.1 在Cocos2D-X中調用Objective-C / 35
2.7.2 在Cocos2D-X中調用Java / 36
2.8 使用doxygen獲得Cocos2D-X的最新文檔 / 37
2.9 啓動文件和適配 / 39
2.10 本章小結 / 41
第3章 Cocos2D-X中的核心類 / 42
3.1 坐標係簡介 / 43
3.1.1 OpenGL坐標係 / 43
3.1.2 世界坐標係 / 43
3.1.3 節點坐標係 / 44
3.1.4 仿射變換 / 44
3.2 Cocos2D-X渲染 / 45
3.2.1 渲染樹 / 45
3.2.2 渲染原理 / 45
3.3 節點類 / 46
3.3.1 Node類的成員數據 / 47
3.3.2 Node類的函數 / 48
3.3.3 實戰:通過節點控製屏幕中的全體渲染對象 / 51
3.4 導演類 / 54
3.4.1 Director類的成員數據 / 54
3.4.2 Director類的函數 / 54
3.4.3 實戰:Director類的使用 / 56
3.5 場景類 / 57
3.5.1 如何新建一個場景 / 58
3.5.2 場景的切換 / 59
3.5.3 場景間切換的動畫 / 61
3.6 布景層類 / 63
3.6.1 Layer類的函數 / 64
3.6.2 顔色布景層類LayerColor / 65
3.6.3 菜單類Menu / 68
3.7 圖形繪製類 / 70
3.8 時間調度的使用 / 73
3.9 Ref類和內存管理 / 73
3.10 本章小結 / 74
第4章 Cocos2D-X中的圖片渲染類 / 75
4.1 精靈類 / 75
4.1.1 Sprite類的成員及函數 / 75
4.1.2 貼圖類Texture2D / 77
4.1.3 精靈批處理類SpriteBatchNode / 77
4.1.4 精靈幀類SpriteFrame / 79
4.1.5 精靈幀緩存類SpriteFrameCache / 80
4.1.6 九宮格精靈Scale9Sprite / 80
4.1.7 實戰:精靈類及其相關類的使用 / 81
4.2 裁剪節點類 / 88
4.3 圖片異步加載 / 91
4.4 Cocos2D-X中如何節約圖片空間 / 92
4.4.1 圖片打包器TexturePacker / 92
4.4.2 通過優化降低遊戲尺寸的方法 / 95
4.5 本章小結 / 96
第5章 Cocos2D-X中的動作、特效與動畫 / 97
5.1 動作類 / 97
5.1.1 Action類的主要成員數據和函數 / 97
5.1.2 基本動作 / 98
5.1.3 攝像機動作類 / 108
5.1.4 基本樣條動作 / 110
5.1.5 緩衝動作 / 114
5.1.6 組閤動作 / 117
5.1.7 跟隨動作 / 118
5.1.8 可調整速度動作 / 119
5.1.9 動作延時 / 120
5.1.10 改變動作執行對象 / 121
5.1.11 函數迴調動作 / 121
5.1.12 過程動作 / 123
5.2 動作管理類 / 125
5.2.1 動作管理類的主要函數 / 126
5.2.2 動作管理類的使用 / 126
5.3 Cocos2D-X中的網格動作 / 127
5.3.1 Cocos2D-X中的網格 / 127
5.3.2 網格動作 / 127
5.3.3 清除網格 / 129
5.4 Cocos2D-X中的動畫 / 130
5.4.1 Cocos2D-X中與動畫相關的類 / 130
5.4.2 Cocos2D-X中的動畫實例 / 131
5.4.3 使用plist配置文件實現動畫 / 133
5.4.4 Flash動畫的轉換 / 135
5.5 本章小結 / 137
第6章 Cocos2D-X中的菜單項和文本渲染係統 / 138
6.1 菜單項 / 138
6.1.1 標簽菜單項 / 138
6.1.2 精靈菜單項 / 139
6.1.3 觸發器菜單項 / 140
6.1.4 菜單項的使用 / 140
6.2 文本渲染係統 / 141
6.2.1 LableAtlas類 / 142
6.2.2 LabelTTF類 / 143
6.2.3 LabelBMFont類 / 147
6.2.4 Label標簽類 / 151
6.2.5 FreeType字體庫 / 152
6.2.6 富文本類RichText / 153
6.3 本章小結 / 154
第7章 Cocos2D-X中的事件處理機製和UI控件 / 155
7.1 Cocos2D-X中的事件處理機製 / 155
7.2 Cocos2D-X中的觸屏事件 / 156
7.2.1 觸點類Touch / 156
7.2.2 單點觸摸函數 / 157
7.2.3 多點觸摸函數 / 157
7.2.4 加入單點觸摸 / 158
7.2.5 加入多點觸摸 / 159
7.2.6 實戰:主角隨手指移動 / 161
7.2.7 實戰:縮放 / 164
7.3 Cocos2D-X中的加速度傳感器事件 / 165
7.3.1 Acceleration結構體 / 165
7.3.2 實戰:加速度傳感器事件的使用 / 166
7.4 Cocos2D-X中的按鍵事件 / 167
7.5 UI控件 / 168
7.5.1 按鈕控件 / 169
7.5.2 選擇框 / 170
7.5.3 滾動列錶 / 171
7.5.4 輸入框 / 172
7.6 本章小結 / 172
第8章 Cocos2D-X中的瓦片地圖集 / 173
8.1 瓦片地圖集及編輯器簡介 / 173
8.1.1 瓦片地圖的種類及用途 / 173
8.1.2 地圖編輯器Tiled / 174
8.1.3 用Tiled編輯地圖 / 175
8.1.4 設置地形 / 179
8.1.5 添加對象層 / 180
8.2 Cocos2D-X中和Tiled相關的類 / 181
8.2.1 Tiled數據文件 / 181
8.2.2 瓦片地圖集類TMXTiledMap / 182
8.2.3 地圖層類TMXLayer / 183
8.2.4 地圖精靈組類TMXObjectGroup / 184
8.3 Cocos2D-X中使用地圖和地圖相關類 / 184
8.3.1 新建地圖類並在地圖中顯示 / 184
8.3.2 普通視角地圖獲得對應位置圖素 / 185
8.3.3 45度角地圖獲得對應位置圖素 / 187
8.3.4 GID值的使用 / 188
8.3.5 地圖塊屬性的獲得 / 189
8.3.6 在地圖中加入精靈 / 190
8.3.7 精靈層的操作 / 192
8.4 本章小結 / 193
第9章 Cocos2D-X中的聲音、存儲和網絡 / 194
9.1 Cocos2D-X中的聲音 / 194
9.1.1 Cocos2D-X在不同平颱下支持的聲音 / 194
9.1.2 SimpleAudioEngine類的常用函數 / 195
9.1.3 實戰:SimpleAudioEngine類的使用 / 196
9.2 Cocos2D-X中的遊戲存檔 / 197
9.2.1 UserDefault類的常用函數 / 197
9.2.2 實戰:UserDefault類的使用 / 198
9.3 Cocos2D-X中的網絡連接 / 200
9.3.1 cURL基礎知識 / 200
9.3.2 HttpClient類 / 203
9.3.3 Socket類 / 204
9.4 本章小結 / 205
第10章 Cocos2D-X中的物理引擎 / 206
10.1 物理引擎 / 206
10.1.1 物理引擎簡介 / 206
10.1.2 物理引擎的作用 / 206
10.1.3 認識Box2D和Chipmunk / 207
10.2 Cocos2D-X中的Box2D / 207
10.2.1 Box2D中的重要概念 / 207
10.2.2 Box2D的使用步驟 / 208
10.3 Cocos2D-X中的Chipmunk / 213
10.4 物理精靈類PhysicsSprite / 215
10.5 本章小結 / 216
第二部分 高級篇
第11章 Cocos2D-X中的腳本語言——Lua / 218
11.1 Lua基本介紹 / 218
11.1.1 Lua的變量及內置類型 / 219
11.1.2 Lua的操作符和控製結構 / 221
11.1.3 Lua中的全局函數 / 222
11.1.4 在Lua中實現麵嚮對象 / 223
11.2 Lua與Cocos2D-X的結閤 / 225
11.2.1 C++調用Lua / 225
11.2.2 Lua調用C++ / 226
11.3 Cocos2D-X的Lua相關框架 / 230
11.4 本章小結 / 231
第12章 Cocos2D-X中的腳本語言——JavaScript / 232
12.1 認識HTML5 / 232
12.2 JavaScript基本介紹 / 233
12.2.1 JavaScript的變量和內置類型 / 234
12.2.2 JavaScript的操作符和控製結構 / 236
12.2.3 在JavaScript中實現麵嚮對象 / 237
12.3 搭建HTML5開發環境 / 238
12.4 Cocos2D-JS的HTML5運行原理 / 240
12.5 JavaScript與Cocos2D-X的結閤 / 244
12.5.1 C++調用JavaScript / 245
12.5.2 JavaScript調用C++ / 246
12.6 本章小結 / 248
第13章 遊戲中常用算法在Cocos2D-X中的實現 / 249
13.1 A星算法 / 249
13.1.1 啓發式搜索算法原理 / 249
13.1.2 什麼是A星搜索 / 250
13.1.3 A星算法在Cocos2D-X中的實現 / 251
13.2 碰撞檢測算法 / 263
13.2.1 碰撞檢測的基本思想 / 264
13.2.2 碰撞檢測在Cocos2D-X中的實現 / 265
13.3 本章小結 / 271
第14章 粒子係統 / 272
14.1 什麼是粒子係統 / 272
14.1.1 粒子係統的特點 / 273
14.1.2 粒子係統的構成 / 273
14.2 Cocos2D-X中的粒子係統 / 273
14.2.1 粒子批處理類ParticleBatchNode / 274
14.2.2 粒子係統基類ParticleSystem / 275
14.2.3 粒子係統子類ParticleSystemQuad / 276
14.2.4 ParticleSystem中的屬性介紹 / 278
14.3 在Cocos2D-X中使用粒子係統 / 279
14.3.1 新建一個粒子係統ParticleSystemQuad類 / 279
14.3.2 直接使用ParticleSystemQuad類的子類 / 281
14.3.3 使用粒子編輯器創建粒子係統 / 282
14.3.4 “清理”粒子係統 / 283
14.4 支持Cocos2D-X的粒子編輯器 / 283
14.4.1 Windows粒子編輯器Cocos2d Particle Editor / 283
14.4.2 粒子編輯器Particle Designer / 287
14.4.3 粒子編輯器V-Play / 293
14.5 實戰:使用編輯器設計下雨效果 / 294
14.6 本章小結 / 296
第15章 Cocos2D-X中的著色器 / 297
15.1 什麼是著色器語言 / 297
15.2 著色器語言概覽 / 297
15.2.1 著色器語言的特點 / 298
15.2.2 使用著色器可以為我們帶來什麼 / 300
15.2.3 如何學習著色器語言 / 301
15.3 在Cocos2D-X中使用shader / 303
15.3.1 shader程序的編譯執行流程 / 303
15.3.2 shader執行者GLProgram類 / 303
15.3.3 shader管理者ShaderCache類 / 304
15.3.4 在Cocos2D-X中創建並使用shader / 305
15.4 實戰:圖片灰化 / 306
15.5 本章小結 / 308
第16章 Cocos2D-X相關的編輯器 / 309
16.1 CocosBuilder簡介 / 309
16.1.1 CocosBuilder菜單操作 / 309
16.1.2 對象屬性編輯 / 313
16.1.3 CocosBuilder在Cocos2D-X中常用的相關類 / 318
16.1.4 實戰:CocosBuilder應用 / 319
16.2 CocoStudio簡介 / 325
16.2.1 數據編輯器 / 326
16.2.2 場景編輯器 / 327
16.2.3 界麵編輯器 / 329
16.2.4 動畫編輯器 / 331
16.3 本章小結 / 332
第三部分 實戰篇
第17章 縱版射擊遊戲:喵星戰爭 / 334
17.1 縱版射擊遊戲的特點 / 334
17.2 喵星戰爭簡介 / 334
17.3 主遊戲模塊組成元素的實現 / 336
17.3.1 主角小貓的實現 / 336
17.3.2 敵人狗博士的實現 / 340
17.3.3 魚骨子彈的實現 / 343
17.3.4 試管子彈的實現 / 345
17.3.5 遊戲分數的實現 / 345
17.4 喵星戰爭的實現 / 347
17.4.1 遊戲主模塊的實現 / 347
17.4.2 遊戲主菜單的實現 / 352
17.4.3 關於界麵實現 / 355
17.5 本章小結 / 357
第18章 橫版動作遊戲:蘿莉快跑 / 358
18.1 橫版動作遊戲的特點 / 358
18.2 蘿莉快跑簡介 / 359
18.3 主遊戲模塊組成元素的實現 / 361
18.3.1 主角蘿莉的實現 / 361
18.3.2 星星的實現 / 366
18.3.3 地圖的實現 / 367
18.4 蘿莉快跑的實現 / 373
18.4.1 遊戲主模塊的實現 / 373
18.4.2 遊戲主菜單的實現 / 376
18.4.3 關於界麵的實現 / 378
18.5 本章小結 / 379
第19章 物理體育遊戲:迷你世界杯 / 380
19.1 物理遊戲的特點 / 380
19.2 迷你世界杯簡介 / 380
19.3 迷你世界杯的實現 / 384
19.3.1 主角的實現 / 384
19.3.2 遊戲主模塊的實現 / 387
19.3.3 遊戲主菜單的實現 / 393
19.3.4 關於界麵的實現 / 396
19.4 本章小結 / 397
第20章 消除遊戲:天天消豆豆 / 398
20.1 消除遊戲的特點 / 398
20.2 天天消豆豆簡介 / 398
20.3 天天消豆豆的實現 / 399
20.3.1 Lua遊戲框架實現 / 399
20.3.2 開始界麵模塊的實現 / 402
20.3.3 遊戲主邏輯的實現 / 405
20.4 本章小結 / 415
附錄 Cocos2D-X中常見的宏 / 416
· · · · · · (
收起)