cc.game

概述

  使用cc.game單例代替了原有的cc.Application以及cc.AppControlhtml

  cc.game是Cocos2d-JS的遊戲對象,主要職責包括,配置的讀取,引擎的加載,遊戲腳本的加載,以及遊戲的啓動。
  簡化了工程啓動代碼的編寫。html5

  cc.game對象目前的設計很是精簡,使用也很是簡單,開發者須要關注的只有很是有限的幾個函數:onStartrunpreparejson

使用

  進行入口代碼編寫,通常放在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();
});// 開始加載引擎和遊戲腳本,準備遊戲執行環境

 

 

debugMode 常量

對應於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級別日誌

 

CONFIG_KEY 常量

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]

EVENT_HIDE和EVENT_SHOW事件

cc.game還支持對遊戲進入後臺和前臺的事件監聽:cc.game.EVENT_HIDEcc.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.runcc.game.prepare的調用將啓動引擎和遊戲的加載,遊戲進程啓動流程以下:

  1. 首先開始加載引擎相關腳本,在Web中加載Web引擎自己,在原生應用中則會加載引擎依賴的附加JS腳本。
  2. 加載用戶JS腳本。
  3. 收集系統和平臺相關信息,初始化渲染器。
  4. 啓動cc.director的遊戲主循環邏輯。
  5. 調用onStart入口函數以執行用戶的啓動邏輯。
相關文章
相關標籤/搜索