代碼目錄結構

在Egret Wing中打開上一節中我們創建的項目工程,查看代碼目錄結構,Forward在如下圖中標記了各個目錄的及關鍵文件的用途。

代碼閱讀理解
接下來我們從web入口一步一步閱讀初始代碼。首先打開index.html文件,我們看到index文件內容如下:


在上面的代碼中我們看到,在index中首先加載了一個manifest.json文件。
xhr.open('GET', './manifest.json?v=' + Math.random(), true);
好的,我們打開這個文件看看里面的內容。

initial中的是egret庫對應的js文件,也就是我們在《Egret開發筆記(一)》中創建項目時勾選引入的引擎庫,如下圖:


而game模塊中定義的則是啟動程序后要加載的src目錄下ts文件經過編譯生成的js文件。




我們可以看出,在加載完manifest文件之后,將manifest文件中initial和game拼接在一起作為一個list。然后通過loadScript開始加載list中所有文件。而每一個文件則是通過loadSingleScript來完成加載的。按照上面的定義首先加載的一定是egret.js,接下來是egret.web.js、game.js...

當所有預定義的文件加載進來之后,在加載完成的回調函數中,調用了egret的runEgret接口,這個接口做了什么呢?


斷點調試可以看到,這個接口經過一系列參數設置后,通過document.querySelectorAll查找到一個egret-player并把它放在一個container中,這個egret-player就是在index.html中定義的body體,這個div中定義了data-entry-class一個Main類型,同時在這個div中定義了一系列這個body體顯示的一系列參數列表。

通過這個container以及前面傳遞過來一個參數集options,然后創建了一個web.webPlayer,而這個web.webPlayer的start接口就調起了我們src目錄下Main的一個對象。
這樣我們就應該明白egret項目是如何從index.html到Main的調用的。

在進入Main之后,構造函數中首先注冊了一個ADD_TO_STAGE事件,響應接口是onAddToStage,在這個接口中onPause、onResume,再執行runGame接口——

在這里先加載資源、創建游戲場景、使用加載description_json文件、啟動動畫、使用平臺登錄賬號、并且獲取平臺賬戶信息、打印賬戶信息。

在loadResource中,首先創建了一個LoadingUI,就是一個加載頁面,然后開始加載default.res.json文件,文件路徑在resource目錄。加載頁面展示的進度則是default.res.json中preload分組的加載進度,當加載資源完成后,移除加載頁面。我們打開這個文件可以看到,實際上這個文件里面的groups中定義了預定義的分組資源,而在resources中定義了各個資源的名稱、類型和url。整個文件是一個json格式的資源配置文件,如下圖所示。

在runGame中,當我們加載完預定義的資源后,就開始創建場景中的背景、對象、設置icon等,這些與具體想實現的功能有關,這里不做過多解釋,涉及到要創建的各種控件對象我們后續專門一章來學習。
接下來,加載description_json文件,實際上是讀取了對應文件中的文字信息,并將加載的結果傳進startAnimation中啟動一個循環動畫



最后調用平臺登錄接口,獲取平臺賬號信息并打印。至此,就完成Main對象中所有邏輯的處理。