使用cc.game
單例代替了原有的cc.Application
以及cc.AppControl
。html
cc.game
是Cocos2d-JS的遊戲對象,主要職責包括,配置的讀取,引擎的加載,遊戲腳本的加載,以及遊戲的啓動。
簡化了工程啓動代碼的編寫。html5
cc.game對象目前的設計很是精簡,使用也很是簡單,開發者須要關注的只有很是有限的幾個函數:onStart
,run
,prepare
。json
進行入口代碼編寫,通常放在main.js
中。瀏覽器
項目啓動代碼的編寫較v2版本是大大的精簡了,使用起來會更加舒服:ide
cc.game.onStart = function(){ //load resources cc.LoaderScene.preload(resource_list, function () { cc.director.runScene(new MyScene()); }, this); }; cc.game.run();
這段範例代碼中,onStart
是引擎加載完成而且開始遊戲主循環以前會被調用的回調函數,開發者須要先經過賦值註冊本身的遊戲入口函數。一般在這個入口函數中,開發者須要使用cc.LoaderScene
預加載入口場景所依賴的資源,並在加載完成後啓動遊戲的入口場景。雖然在JSB中,資源的預加載並非必須的,由於依賴資源都存在App包中,可是仍是推薦用這種方式來書寫以保障Web平臺和Native平臺上游戲代碼的統一性。函數
當run
的時候,引擎會自動讀取project.json
配置文件獲取配置信息。this
當遊戲運行於Web頁面中時,開發者可能須要延時啓動遊戲,好比等待用戶點擊某個按鍵。Cocos2d-JS支持遊戲的延時運行,開發者能夠經過cc.game.prepare
函數來預先加載引擎和遊戲腳本並準備遊戲執行環境,在合適的時機再調用cc.game.run
來開始遊戲。spa
cc.game.onStart = function(){ //load resources cc.LoaderScene.preload(resource_list, function () { cc.director.runScene(new MyScene()); }, this); }; cc.game.prepare(); document.getElementById("myBtn").addEventListener("click", function(){ cc.game.run(); });// 開始加載引擎和遊戲腳本,準備遊戲執行環境
對應於project.json
中的debugMode
字段的配置:debug
DEBUG_MODE_NONE : 0 //都不開啓 DEBUG_MODE_INFO : 1 //用控制檯輸出INFO、WARN、ERROR級別日誌 DEBUG_MODE_WARN : 2 //用控制檯輸出WARN、ERROR級別日誌 DEBUG_MODE_ERROR : 3 //用控制檯輸出ERROR級別日誌 DEBUG_MODE_INFO_FOR_WEB_PAGE : 4 //用HTML界面(jsb爲控制檯)輸出INFO、WARN、ERROR級別日誌 DEBUG_MODE_WARN_FOR_WEB_PAGE : 5 //用HTML界面(jsb爲控制檯)輸出WARN、ERROR級別日誌 DEBUG_MODE_ERROR_FOR_WEB_PAGE : 6 //用HTML界面(jsb爲控制檯)輸出ERROR級別日誌
project.json
配置文件的key名稱:設計
engineDir : "engineDir", dependencies : "dependencies", debugMode : "debugMode", showFPS : "showFPS", frameRate : "frameRate", id : "id", renderMode : "renderMode", jsList : "jsList", classReleaseMode : "classReleaseMode"
要獲取配置文件的值,能夠這麼使用:cc.game.config[cc.game.CONFIG_KEY.showFPS]
。
cc.game
還支持對遊戲進入後臺和前臺的事件監聽:cc.game.EVENT_HIDE
和cc.game.EVENT_SHOW
事件。在Web平臺上瀏覽器tab頁面的切換,瀏覽器的關閉均可能會觸發cc.game.EVENT_HIDE
事件,返回遊戲頁面則會觸發cc.game.EVENT_SHOW
事件,不過因爲瀏覽器的不一樣實現,瀏覽器中這些事件的觸發並不被保障,因此請不要依賴cc.game.EVENT_HIDE
事件來作關鍵的數據處理。在Native平臺上,這兩個事件則會在遊戲切換至後臺與前臺的時候被調用,不一樣於Web平臺,Native平臺上這兩個事件的觸發是有保障的。
cc.eventManager.addCustomListener(cc.game.EVENT_HIDE, function(){ //處理遊戲進入後臺的狀況 }); cc.eventManager.addCustomListener(cc.game.EVENT_SHOW, function(){ //處理返回遊戲的狀況 });
cc.game.run
或cc.game.prepare
的調用將啓動引擎和遊戲的加載,遊戲進程啓動流程以下:
cc.director
的遊戲主循環邏輯。onStart
入口函數以執行用戶的啓動邏輯。