目 錄
第1章 Cocos2D-X引擎的介紹 1
1.1 何為遊戲引擎 1
1.1.1 遊戲的核心—引擎 1
1.1.2 引擎的特點 2
1.1.3 知名的引擎介紹 4
1.1.4 引擎的分類 5
1.2 Cocos2D-X引擎的來曆 8
1.3 引擎的版本 9
1.4 下載與安裝 10
1.5 引擎的組成 13
1.6 技術文檔 15
1.7 成功的遊戲 17
1.8 Cocos2D-X引擎的體係 18
1.9 Cocos2D-X引擎的版權聲明 19
1.10 本章小結 20
第2章 Cocos2D-X引擎的 開發環境 21
2.1 跨平颱的開發 21
2.2 建立開發環境 23
2.2.1 PC開發環境 23
2.2.2 Android開發環境 26
2.2.3 iOS開發環境 35
2.3 引擎中的混閤編譯 38
2.3.1 Java與C++的混閤編譯 38
2.3.2 Objective-C與C++的混閤編譯 41
2.4 引擎的啓點 42
2.4.1 應用程序入口 43
2.4.2 引擎應用入口 44
2.5 豐富的示例程序 46
2.5.1 TestCpp示例項目 46
2.5.2 腳本示例項目 47
2.5.3 MoonWarriors示例項目 47
2.6 本章小結 48
第3章 引擎的核心——渲染框架 49
3.1 基本框架 50
3.1.1 引擎的位置 50
3.1.2 根源種子 51
3.1.3 子類結構 57
3.2 渲染框架 57
3.2.1 框架結構 58
3.2.2 攝像機類(CCCamera) 59
3.2.3 導演類(CCDirector) 59
3.2.4 場景類(CCScene) 62
3.2.5 圖層類(CCLayer) 64
3.2.6 精靈類(CCSprite) 68
3.2.7 精靈集閤類(CCSpriteBatchNode) 72
3.2.8 精靈幀緩衝(CCSpriteFrameCache) 74
3.2.9 Zwoptex紋理編輯器 76
3.3 文字與字體 80
3.3.1 TTF類型標簽(CCLabelTTF) 81
3.3.2 BMFont標簽類(CCLabelBMFont) 84
3.3.3 Atlas標簽類(CCLabelAtlas) 87
3.4 菜單按鈕 89
3.5 幾何繪製DrawPrimitives 94
3.6 CocosBuilder編輯器 95
3.6.1 CocosBuilder使用指南 95
3.6.2 引擎中的應用 97
3.7 本章小結 98
第4章 動作功能 100
4.1 概述 100
4.2 動作基類 101
4.2.1 動作類的繼承關係 102
4.2.2 動作基類CCAction的成員函數 102
4.2.3 類CCNode中與動作有關的函數 104
4.3 時間動作 105
4.3.1 及時動作 105
4.3.2 持續動作 109
4.4 組閤動作類 116
4.4.1 序列動作類(CCSequence) 116
4.4.2 同步動作類(CCSpawn) 118
4.4.3 重復動作類(CCRepeat & CCRepeatForever) 119
4.5 可變速度類(CCEaseAction) 120
4.5.1 CCEaseIn、CCEaseOut和CCEaseInOut 122
4.5.2 EaseSineIn、EaseSineOut和EaseSineInOut 124
4.5.3 CCEaseBackIn、CCEaseBackOut和CCEaseBackInOut 124
4.5.4 EaseExponentialIn、EaseExponentialOut和EaseExponentialInOut 125
4.5.5 CCEaseBounceIn、CCBounceOut和CCBounceInOut 125
4.5.6 CCEaseElasticIn、CCEaseElasticOut和CCEaseElasticInOut 125
4.6 速度類(CCSpeed) 125
4.7 延遲動作類(CCDelay) 127
4.8 跟隨動作類(CCFollow) 128
4.9 擴展動作類 129
4.9.1 概述 129
4.9.2 翻頁動作(CCPageTurn3D) 130
4.9.3 波紋動作(CCWaves3D) 130
4.9.4 格子動作類(CCGridAction) 131
4.10 動畫動作類 132
4.10.1 精靈幀 133
4.10.2 精靈幀緩衝 134
4.10.3 動畫類 135
4.10.4 動畫動作 136
4.11 動畫編輯器 136
4.11.1 概述 136
4.11.2 CocosBuilder編輯器中的精靈動畫 137
4.11.3 SpriteX草莓編輯器 138
4.11.4 MotionWelder動畫編輯器 139
4.12 樣例程序 141
4.13 本章小結 143
第5章 用戶交互 147
5.1 概述 147
5.2 玩傢交互信息 149
5.3 觸摸操作的處理機製 149
5.4 接收操作 153
5.5 分發機製 154
5.6 處理響應 157
5.7 多點觸碰 159
5.8 加速計的響應函數 161
5.9 本章小結 162
第6章 遊戲背景 164
6.1 概述 164
6.2 2D遊戲背景的類型 164
6.3 磚塊地圖編輯器 166
6.3.1 地圖編輯器概述 167
6.3.2 Tile Map Editor(磚塊地圖編輯器) 168
6.3.3 製作一張遊戲地圖 170
6.3.4 編輯器中的屬性功能 172
6.4 磚塊地圖Tile Map 173
6.5 地圖數據的格式 175
6.5.1 編輯器導齣的文件 175
6.5.2 地圖文件分析 176
6.6 磚塊地圖的實現 178
6.6.1 磚塊地圖類CCTMXTiledMap 179
6.6.2 地圖圖層類CCTMXLayer 181
6.6.3 地圖物體層CCTMXObjectGroup 183
6.7 示例項目 184
6.8 背景的滾動與角色移動 186
6.9 多層背景滾動效果 188
6.10 本章小結 190
第7章 物理模擬與碰撞檢測 192
7.1 概述 192
7.2 遊戲中的碰撞檢測 193
7.3 碰撞檢測的方法 194
7.3.1 平麵幾何在碰撞檢測中的應用 194
7.3.2 物體的包圍盒 197
7.3.3 AABB碰撞檢測技術 198
7.4 基本物理知識 199
7.5 你好!Box2D! 201
7.5.1 概述 201
7.5.2 物理世界 202
7.5.3 遊戲中的兩個世界 202
7.6 Box2D的基礎知識 203
7.6.1 概述 204
7.6.2 概念定義 204
7.6.3 物理引擎的模塊 205
7.7 引 擎 內 核 205
7.7.1 基本配置 206
7.7.2 內存管理機製 207
7.7.3 工廠模式 208
7.7.4 數據單位 208
7.7.5 用戶數據 209
7.8 物理世界World 210
7.8.1 創建和摧毀一個世界 210
7.8.2 讓世界運轉起來 211
7.8.3 探索世界 212
7.8.5 AABB查詢 213
7.8.6 光綫投射(Ray Casts) 214
7.9 形狀Shapes 216
7.9.1 碰撞模塊 216
7.9.2 形狀Shape的作用 216
7.9.3 圓形(Circle Shapes) 216
7.9.4 多邊形(b2PolygonShape) 217
7.10 框架Fixtures 218
7.10.1 動態模塊(Dynamics Module) 219
7.10.2 框架(Fixtures) 219
7.10.3 密度(Density) 219
7.10.4 摩擦(Friction) 220
7.10.5 恢復(Restitution) 220
7.10.6 篩選(Filtering) 220
7.10.7 感應器(Sensors) 221
7.11 物體Bodies 222
7.11.1 物體定義 222
7.11.2 位置和角度(Position and Angle) 223
7.11.3 阻尼(Damping) 223
7.11.4 休眠參數(Sleep Parameters) 224
7.11.5 固定鏇轉(Fixed Rotation) 224
7.11.6 子彈(Bullets) 224
7.11.7 活動狀態(Activation) 225
7.11.8 用戶數據(User Data) 226
7.12 關節(Joints) 226
7.12.1 關節的定義(JointDef) 226
7.12.2 關節的屬性 227
7.12.3 距離關節(Distance Joint) 228
7.12.4 鏇轉關節(Revolute Joint) 229
7.12.5 移動關節(Prismatic Joint) 230
7.12.6 滑輪關節(Pulley Joint) 231
7.12.7 齒輪關節(Gear Joint) 232
7.12.8 鼠標關節(Mouse Joint) 234
7.12.9 綫性關節(Line Joint) 235
7.12.10 焊接關節(Weld Joint) 235
7.13 接觸(Contants) 235
7.13.1 概述 236
7.13.2 接觸類(Contact Class) 237
7.13.3 訪問接觸(Accessing Contacts) 237
7.13.4 接觸監聽器(Contact Listener) 238
7.13.5 接觸篩選(Contact Filtering) 240
7.14 示例項目 241
7.14.1 Box2dTest示例項目 241
7.14.2 調試繪圖DebugDraw 243
7.14.3 創建精靈剛體 244
7.15 本章小結 246
第8章 遊戲中的聲音 249
8.1 概述 249
8.2 音樂與音效 250
8.3 聲音格式 250
8.4 CocosDenshion聲音模塊 252
8.5 背景音樂操作函數 253
8.6 聲音音效操作函數 255
8.7 示例程序 256
8.8 本章小結 259
第9章 文件操作模塊 261
9.1 概述 261
9.2 引擎文件操作模塊 261
9.3 讀取文件 263
9.4 寫入文件 267
9.5 遊戲中用戶數據 269
9.5.1 遊戲中的用戶數據 269
9.5.2 用戶數據的基本類型 270
9.5.3 讀取與寫入操作 271
9.6 示例程序 272
9.7 本章小結 274
第10章 內存管理機製 277
10.1 內存管理概述 277
10.2 引用計數 278
10.3 自動釋放池 280
10.3.1 使用方法 280
10.3.2 實現原理 281
10.4 管 理 模 式 284
10.4.1 引擎當中的應用 284
10.4.2 緩衝區 285
10.5 日誌調試方式 286
10.6 本章小結 288
第11章 粒子係統 290
11.1 概述 290
11.2 粒子效果 291
11.3 粒子係統的來曆 292
11.4 引擎當中的粒子係統 293
11.5 粒子的生命周期 294
11.6 粒子的屬性 295
11.7 粒子發射器屬性 296
11.7.1 發射器共有的屬性 296
11.7.2 重力發射器模式(Gravity) 304
11.7.3 半徑發射器模式(Radius) 306
11.8 粒子效果編輯器 307
11.8.1 概述 308
11.8.2 Particle Designer的使用方法 308
11.8.3 引擎中應用 310
11.9 本章小結 312
第12章 Lua腳本語言 314
12.1 概述 314
12.2 Lua腳本語言簡介 315
12.3 為什麼需要它? 316
12.3.1 簡易性 316
12.3.2 可擴展性 316
12.3.3 高效性 317
12.3.4 可移植性 317
12.4 Lua腳本語言的語法 318
12.4.1 類型與數值 318
12.4.2 錶達式 320
12.4.3 語句 322
12.4.4 函數 326
12.5 Lua在引擎中的應用 328
12.5.1 Lua與C/C++ 328
12.5.2 引擎中的腳本引擎 329
12.6 樣例程序 331
12.6.1 腳本引擎初始化 332
12.6.2 遊戲內容的實現腳本 333
12.6.3 農場層的實現 334
12.6.4 菜單層的實現 337
12.7 本章小結 338
第13章 Cocos2D-HTML5引擎版本 340
13.1 概述 340
13.2 HTML的發展史 341
13.2.1 HTML版本 341
13.2.2 XHTML版本 342
13.2.3 HTML5是未來之星 342
13.3 HTML5新特性 342
13.3.1 跨平颱的特性 343
13.3.2 Canvas API 343
13.3.3 WebGL 344
13.3.4 其他特性 345
13.4 JavaScript語言基礎 346
13.4.1 概述 346
13.4.2 變量 347
13.4.3 數據類型 348
13.4.4 運算符 348
13.4.5 語句 351
13.4.6 對象 352
13.4.7 函數 353
13.4.8 事件 354
13.5 Cocos2d-HTML5引擎 356
13.5.1 HTML5版本介紹 356
13.5.2 安裝引擎 357
13.5.3 示例程序 357
13.5.4 引擎的架構 360
13.6 JS Binding技術的實現 362
13.6.1 概述 362
13.6.2 SpiderMonkey 362
13.6.3 示例程序 363
13.7 本章小結 364
第14章 引擎之外的附加功能 366
14.1 概述 366
14.2 網絡通訊支持 367
14.2.1 HTTP介紹 367
14.2.2 curl庫(libcurl) 368
14.2.3 HTTP在引擎中的應用 368
14.2.4 HTTP示例項目 372
14.2.5 Socket的介紹 376
14.2.6 BSD Socket在引擎中的應用 378
14.3 收費模式 379
14.3.1 下載計費 379
14.3.2 內置計費 380
14.3.3 廣告版本 380
14.4 社交網絡在遊戲中的應用 381
14.4.1 Game Center 382
14.4.2 OpenFeint 384
14.5 數據分析 385
14.5.1 Flurry介紹 386
14.5.2 友盟 390
第15章 Cocos2D-X引擎的未來 391
15.1 概述 391
15.2 Cocos2D引擎的走勢 391
15.3 Cocos2D-X引擎的不足 392
15.3.1 豐富的UI 393
15.3.2 完善的工具 393
15.3.3 支持網絡通迅 395
15.3.4 版本的統一 395
15.3.5 數據安全 396
15.4 Cocos2D-X引擎增強的功能 396
15.4.1 良好的中文支持 397
15.4.2 遊戲基本框架 397
15.4.3 遊戲邏輯支持 398
15.4.4 腳本化編程 399
15.4.5 可視化的操作界麵 400
15.5 會不會有Cocos3D? 401
15.6 本章小結 403
· · · · · · (
收起)