初學者貼出一段 Cocos2d-x Android 專案代碼詢問問題,卻未說明具體錯誤現象。本文解析這段「最簡專案」的架構、關鍵類別職責,並提供系統性學習路徑建議。
| 類別 | 繼承/實作 | 核心職責 | 關鍵方法 |
|---|---|---|---|
MainActivity | Activity | Android 進入點、生命週期管理、Cocos2d-x 引擎初始化 | onCreate(), onPause(), onResume() |
CCGLSurfaceView | SurfaceView | OpenGL ES 渲染表面、觸控事件分發 | onTouchEvent(), queueEvent() |
CCDirector | 單例 | 導演類:場景切換、幀率控制、渲染循環驅動 | runWithScene(), replaceScene(), setAnimationInterval() |
CCScene | CCNode | 場景容器:管理所有遊戲物件 (Layer、Sprite 等) | addChild(), removeChild() |
CCLayer | CCNode | 圖層:遊戲邏輯載體、觸控/鍵盤/重力感應事件接收 | onTouchBegan(), update(), scheduleUpdate() |
game | CCLayer | 自定義遊戲邏輯層 (範例中為空實作) | 建構子、覆寫事件處理 |
| 現象 | 可能原因 | 檢查項目 |
|---|---|---|
| 黑畫面/閃退 | OpenGL ES 版本不支援 | Manifest 聲明 android:glEsVersion="0x00020000" (ES 2.0) |
| 無法編譯 | NDK 路徑/版本錯誤 | local.properties 設定 ndk.dir、Gradle 設定 ndkVersion |
| 觸控無反應 | 事件未分發到導演 | CCGLSurfaceView.onTouchEvent 呼叫 CCDirector.sharedDirector().onTouchEvent() |
| 生命週期異常 | onPause/onResume 未轉發 | MainActivity 覆寫並呼叫 CCDirector.sharedDirector().onPause()/onResume() |
你貼出的代碼是標準的 Cocos2d-x Android 最小專案骨架。不要停留在「複製貼上能跑」階段,請從 C++ 基礎開始,系統性掌握引擎架構。建議先跑通官方 cpp-tests,逐個場景閱讀代碼,這是通往精通的最短路徑。