第1篇入門篇第1章Cocos2d-x啟航 2
1.1特點、內容結構以及建議 2
1.2Cocos2d-x簡介 3
1.3從2.x到3.x 4
1.4約定 4
1.5啟航 5
1.5.1Windows 6
1.5.2Mac 10
1.5.3Linux 10
1.5.4Cocos引擎 11
第2章使用Cocos2d-x 13
2.1Cocos2d-x世界 13
2.1.1顯示圖片 14
2.1.2執行邏輯 14
2.1.3獲取輸入 14
2.2分析HelloCpp 15
2.3小結 18
第3章低級錯誤大全 20
3.1create和retain-release 20
3.2繼承對象的create 21
3.3多個對象執行同一個Action 21
3.4忘記調用父類的虛函數 21
3.5隱藏在代碼中的神秘殺手,節點中的節點操作 22
3.6普通對象和new出來的對象 22
3.7不要忘記init 23
3.8addChild失敗 24
3.9在onEnter中調用parent的addChild 24
3.10忘記移除 25
3.11重載draw注意事項 25
3.12關于引用 25
3.13關于命名空間 25
3.14關于類之間的互相包含 26
3.15關于平臺相關的API 26
3.16關于update中寫邏輯 26
3.17關于調試 27
3.18小結 29
第4章圖解指針 30
4.1指針與內存 30
4.2指針操作 32
4.3指針與數組 32
4.4函數指針 33
4.5野指針和內存泄漏 34
第5章C++11簡介 36
5.1初始化列表 36
5.2類型推導 37
5.3范圍推導 37
5.4智能指針和空指針 37
5.5Lambda特性 38
5.6變長參數模板 39
5.7右值引用 41
5.7.1分辨左值和右值 41
5.7.2移動語義 42
5.7.3完美轉發 45
5.8顯式虛函數重載 46
5.9小結 47
第2篇基礎框架篇
第6章節點系統 50
6.1節點的表現 50
6.1.1位置 50
6.1.2旋轉和傾斜 51
6.1.3縮放 52
6.1.4錨點Anchor 52
6.1.5渲染順序ZOrder 53
6.1.6尺寸 54
6.1.7懶惰計算 54
6.1.8其他屬性介紹 55
6.2節點的使用 55
6.2.1使用Action 56
6.2.2使用Schedule 56
6.3節點和節點 57
6.3.1添加子節點 58
6.3.2刪除節點 59
6.3.3節點查詢 60
6.3.4節點之間的空間變換 61
6.4節點樹的渲染 63
6.5節點與組件 64
第7章內存管理 66
7.1內存基礎知識 66
7.1.1內存區域的劃分 66
7.1.2new和malloc的區別 67
7.1.3堆和棧的區別 68
7.1.4代碼分析 68
7.2內存泄露、野指針和跨動態鏈接庫的內存使用 69
7.2.1內存泄露 69
7.2.2野指針 69
7.2.3動態鏈接庫的內存 70
7.3Cocos2d-x的引用計數 70
7.4容器對象的內存管理 72
7.5復制對象 73
7.6內存優化 74
第8章場景和層 77
8.1Scene場景 77
8.1.1場景和Director 77
8.1.2切換場景與引用計數 79
8.1.3場景切換特效 81
8.2Layer層 85
8.2.1Layer層詳解 86
8.2.2LayerColor顏色層詳解 86
8.2.3LayerGradient漸變層詳解 87
8.2.4LayerMultiplex復合層詳解 88
第9章精靈詳解 89
9.1Sprite詳解 89
9.1.1使用Sprite 89
9.1.2創建Sprite 89
9.1.3初始化流程 90
9.1.4設置紋理 91
9.1.5渲染 92
9.2SpriteFrame和SpriteFrameCache詳解 92
9.2.1SpriteFrame詳解 92
9.2.2SpriteFrameCache詳解 93
9.2.3SpriteFrameCache加載流程 93
9.3SpriteBatchNode詳解 94
9.3.1創建SpriteBatchNode 95
9.3.2添加與刪除SpriteBatchNode 95
9.3.3使用SpriteBatchNode 95
第10章動作系統 98
10.1使用Action 98
10.2Action整體框架 99
10.2.1Action類 100
10.2.2ActionManager類 100
10.3Action運行流程 101
10.3.1瞬時動作ActionInstant 103
10.3.2持續動作ActionInterval 103
10.3.3組合動作 104
10.3.4函數動作 104
10.3.5時間動作 105
10.4Action的分類 105
10.4.1瞬間動作 107
10.4.2持續動作 107
10.4.3組合動作 108
10.4.4變速動作 108
10.4.5擴展動作 109
10.4.6特效動作 111
第11章播放動畫 119
11.1播放幀動畫 119
11.2創建Animation 121
11.2.1基于Plist文件自動創建Animation 121
11.2.2解析TexturePacker的Plist文件 123
11.2.3使用AnimationCache 125
11.2.4經驗分享 126
11.3幀動畫框架剖析 127
11.3.1幀動畫系統結構 127
11.3.2Animate運行流程 128
11.4進度動畫 129
11.4.1半徑掃描效果 130
11.4.2水平掃描效果 131
11.4.3垂直掃描效果 132
11.4.4四邊擴散/收縮效果 133
第12章紋理詳解 135
12.1在Cocos2d-x中使用紋理 135
12.1.1Texture的初始化 135
12.1.2紋理和Sprite的關系 136
12.1.3POT和NPOT 136
12.1.4紋理混合Blend 137
12.1.5Alpha預乘 138
12.1.6紋理參數 139
12.1.7紋理過濾TextureFilter 140
12.1.8紋理環繞 142
12.1.9Mip貼圖 143
12.1.10渲染紋理 145
12.2管理紋理 146
12.2.1使用TextureCache管理紋理 146
12.2.2使用TextureCache加載紋理 148
12.2.3異步加載紋理 152
12.3紋理格式 153
12.4紋理壓縮 156
12.4.1紋理壓縮格式對比 157
12.4.2在Cocos2d-x中使用紋理壓縮 158
12.4.3使ETC1支持透明 159
第13章顯示文字 164
13.1使用Label 164
13.1.1LabelTTF詳解 164
13.1.2LabelBMFont詳解 166
13.1.3LabelAtlas詳解 167
13.1.4Label詳解 167
13.2新Label框架剖析 171
13.2.1整體框架 171
13.2.2運行流程 173
13.2.3STRING_TEXTURE類型Label的運行流程 173
13.2.4使用FontAtlas的Label的運行流程 174
13.2.5FontAtlas的創建流程 174
13.3關于中文顯示 176
13.3.1使用中文配置文件csv/xml/plist 177
13.3.2將代碼文件轉為UTF-8編碼 178
13.3.3使用iconv轉換中文 179
13.4造字工具 180
13.4.1使用BMFont工具 180
13.4.2使用Hiero工具 182
第14章運行機制 185
14.1Cocos2d-x內部運行流程 185
14.1.1Application詳解 185
14.1.2Director詳解 187
14.2Cocos2d-x在Windows下的運行流程 188
14.3Cocos2d-x在Android下的運行流程 190
14.3.1啟動游戲 190
14.3.2游戲事件與主循環 192
14.4Cocos2d-x在iOS下的運行流程 194
14.4.1啟動游戲 195
14.4.2主循環 197
第15章渲染機制 198
15.1渲染樹VS渲染命令 198
15.1.1渲染樹 198
15.1.2渲染命令 199
15.2Cocos2d-x3.0渲染框架 200
15.3渲染命令詳解 202
第16章消息機制 206
16.1事件通知 206
16.2NotificationCenter和EventDispatcher 207
16.2.1使用EventDispatcher 208
16.2.2相關接口 208
16.2.3其他監聽者 210
16.2.4使用NotificationCenter 210
16.3內部流程以及注意事項 210
16.3.1消息的通知流程 210
16.3.2消息的注冊流程 211
16.3.3消息的注銷流程 212
16.4小結 212
第17章Schedule詳解 213
17.1Schedule接口簡介 213
17.1.1回調函數 213
17.1.2注冊回調 214
17.1.3注銷回調 215
17.1.4時間縮放、暫停、恢復 215
17.1.5優先級 216
17.1.6線程安全 216
17.2Schedule整體結構與運行流程 216
17.2.1整體結構 216
17.2.2外部流程 217
17.2.3更新順序 218
17.2.4注冊與注銷 218
17.3Schedule使用過程中的問題 219
第3篇UI與交互篇
第18章觸摸輸入 222
18.1如何監聽觸摸消息 222
18.1.1監聽觸摸消息 222
18.1.2觸摸監聽者 222
18.1.3觸摸消息 223
18.1.4注冊監聽 224
18.2觸摸輸入運行流程 224
18.3判斷點擊 226
18.4多點觸摸 228
18.5點擊穿透 229
第19章文本輸入 231
19.1TextFieldTTF簡介 231
19.2使用TextFieldTTF 232
19.3擴展TextFieldTTF 232
19.4詳解IME 234
第20章按鈕與重力感應輸入 236
20.1重力感應 236
20.1.1搖一搖 238
20.1.2多角度傾斜 238
20.2物理按鍵 239
第21章Menu和MenuItem詳解 241
21.1使用Menu和MenuItem 241
21.2結構框架與執行流程 241
21.2.1Menu詳解 242
21.2.2MenuItem詳解 243
21.2.3執行流程 243
21.3MenuItem詳解 244
21.3.1MenuItemLabel詳解 244
21.3.2MenuItemAtlasFont詳解 244
21.3.3MenuItemFont詳解 245
21.3.4MenuItemSprite詳解 245
21.3.5MenuItemImage詳解 245
21.3.6MenuItemToggle詳解 246
21.4實現TabView 246
第22章GUI框架概述 248
22.1GUI框架簡介 248
22.1.1命名空間與頭文件 249
22.1.2工具方法 249
22.1.3九宮縮放 249
22.2UIWidget詳解 250
22.2.1保護節點ProtectNode 250
22.2.2高亮相關 251
22.2.3位置布局相關 251
22.2.4觸摸相關 252
22.2.5控件焦點 254
22.2.6實現自己的Widget 255
22.3UILayout詳解 255
22.3.1Layout背景 256
22.3.2裁剪 256
22.3.3焦點查找 257
22.3.4Layout布局 257
第23章GUI框架之功能控件 259
23.1UIButton控件 259
23.1.1創建Button 259
23.1.2加載圖片 259
23.1.3設置九宮 260
23.1.4設置文字 260
23.2UICheckBox控件 261
23.2.1創建CheckBox 261
23.2.2加載圖片 261
23.2.3選擇 262
23.3UIImageView控件 262
23.3.1創建ImageView 262
23.3.2紋理與九宮 262
23.4UILoadingBar控件 263
23.4.1創建LoadingBar 263
23.4.2紋理與九宮 263
23.4.3方向與進度 263
23.5UISlider控件 263
23.5.1創建與加載紋理 264
23.5.2九宮 264
23.5.3進度與回調 265
第24章GUI框架之文本輸入和顯示 266
24.1UIText、UITextAtlas和UITextBMFont文本顯示控件 266
24.2UIRichText文本顯示控件 267
24.3UITextField文本輸入控件 270
24.3.1創建TextField 270
24.3.2觸摸相關 270
24.3.3輸入密碼 271
24.3.4設置、獲取文本 271
24.3.5輸入回調 272
24.3.6自動換行與對齊 272
24.4UIEditBox文本輸入控件 272
24.4.1創建EditBox 273
24.2.2文本與輸入提示文本 274
24.4.3輸入委托 274
24.4.4輸入模式 274
24.4.5標簽與限制 275
第25章GUI框架之容器控件 276
25.1UIScrollView容器控件 276
25.1.1拖曳滾動 276
25.1.2InnerContainer詳解 277
25.2UIListView容器控件 277
25.3UIPageView容器控件 279
25.4UIWebView容器控件 280
25.4.1加載頁面 280
25.4.2操作頁面 281
25.4.3頁面回調 281
第4篇CocoStudio工具鏈篇
第26章CocoStudio概述 284
26.1CocoStudio是什么 284
26.2CocoStudio的設計目標 285
26.3使用CocoStudio 285
26.3.1使用UI編輯器 286
26.3.2使用動畫編輯器 286
26.3.3使用數據編輯器 287
26.3.4使用場景編輯器 287
26.3.5使用CocoStudio2.x 288
26.4管理資源 288
26.5版本對應 289
第27章CocoStudioUI編輯器 291
27.1使用UI編輯器 291
27.2編寫代碼 295
27.2.1加載UI 295
27.2.2UI動畫 295
27.2.3初始化UI 296
27.2.4更新UI 297
27.3分辨率適配 299
27.4擴展UI編輯器 302
第28章CocoStudio場景編輯器 303
28.1使用場景編輯器 303
28.2組件系統 305
28.3觸發器 308
28.3.1觸發器的使用 308
28.3.2觸發器的代碼框架以及運作流程 310
28.3.3觸發器的擴展 310
28.4加載場景 315
第29章CocoStudio動畫編輯器 316
29.1骨骼動畫的命名規范 316
29.1.1骨骼的命名 316
29.1.2動畫的命名 317
29.1.3幀事件的命名 317
29.1.4整個骨骼動畫對象的命名 317
29.2骨骼動畫框架和運行流程 317
29.2.1骨骼動畫框架 317
29.2.2運行流程 319
29.2.3初始化 319
29.2.4運行和更新 320
29.3使用動畫編輯器 321
29.4編寫代碼 326
29.4.1加載骨骼資源 326
29.4.2創建和播放骨骼動畫 327
29.4.3監聽事件 327
29.4.4動態掛載骨骼 328
29.4.5換裝功能 328
29.4.6骨骼動畫的銜接 329
29.4.7骨骼動畫的渲染優化 330
29.5骨骼動畫的碰撞檢測 330
29.5.1直接矩形檢測 330
29.5.2ColliderDetector手動計算碰撞檢測 331
29.5.3ColliderDetector使用Box2d碰撞檢測 332
29.5.4ColliderDetector的運行機制和結構 334
第30章CocoStudio2.x編輯器 338
30.1使用Cocos引擎 338
30.2使用CocoStudio2.x 339
30.2.1CocoStudio2.x界面介紹 339
30.2.2使用CocoStudio2.x 341
30.2.3在程序中加載.csb文件 342
30.3動畫功能 342
30.3.1在CocoStudio中編輯動畫 342
30.3.2在程序中播放動畫 344
30.4分辨率適配 345
30.5高級特性 347
30.6其他特性 353
30.7在Windows下調試引擎 356
第31章使用CocosBuilder 358
31.1CocosBuilder簡介 358
31.1.1CocosBuilder界面簡介 358
31.1.2工作流程 358
31.1.3常見問題 359
31.2編寫代碼加載ccbi 361
31.2.1創建普通節點 362
31.2.2綁定到類 362
31.2.3綁定回調函數 363
31.2.4綁定成員變量 364
31.2.5初始化流程 364
31.2.6在Cocos2d-x3.x版本中使用 365
31.3播放動畫 365
31.3.1編輯動畫 365
31.3.2編寫代碼 367