1. 程式人生 > >微信小遊戲-CocosCreator 基礎(二十五)

微信小遊戲-CocosCreator 基礎(二十五)

1提前繫結資源,會提前載入(打包成圖集拖進去)

cc.Director與 資源載入策略: cc.Director物件: 1:遊戲裡面控制管理整個遊戲全域性物件,包括了場景切換等,為cc.Director物件; 2:導演物件全域性只有一個cc.director,大寫的為類, 小寫的cc.director為全域性的導演物件; 3: cc.director來獲取導演物件例項; 4: 遊戲中各種管理物件都可以通過cc.director獲取,比如物理引擎管理,Action管理, 碰撞檢測管理等;

常用介面: 1: getWinSize: 適配後的邏輯大小; 2: getWinSizeInPixels: 獲取視窗的畫素大小; 3: getScene: 獲取當前的邏輯場景,場景物件下面是Canvas; 4: setDisplayStats: 是否顯示左下角FPS資訊; 5: getCollisionManager: 獲取碰撞檢測管理物件; 6: getPhysicsManager :獲取物理引擎管理物件; 7:loadScene(scene_name):載入場景,場景的名字,系統會載入對應的場景 8:preloadScene(scene_name):預載入場景

1: h5資源載入的過程: 從伺服器上下載來來資源,並把資源載入到記憶體中,所以你在做h5遊戲,你要把你當前遊戲中要用到的資源先載入下來,否者的話,你在執行的時候去載入就來不及了(h5卡住); 2:本地三種資源載入策略:  1>: h5的小遊戲:採用全部提前繫結好所有的資源。編寫預載入指令碼preload.js, 將要載入的資源手動關聯到第一個啟動的場景上面;  2>: 新增等待介面,預載入下一個場景,然後再進行切換,提前關聯好下一個場景要的資源;            cc.loader.onProgress = function ( completedCount, totalCount,  item ){             console.log("completedCount:" + completedCount + ",totalCount:" + totalCount );         };  3>  嫌手動關聯麻煩,在場景切換中加入過渡場景,程式碼來載入場景的資源:             cc.loader.loadResAll("textures", function (err, assets) {         });     程式碼載入資源會導致setting.js檔案過大,一般儘量少在程式碼裡面載入資源; 自動釋放不了資源

====================================================== 資源設定JS: cc.Class({     extends: cc.Component,

    properties: {         // foo: {         //    default: null,      // The default value will be used only when the component attaching         //                           to a node for the first time         //    url: cc.Texture2D,  // optional, default is typeof default         //    serializable: true, // optional, default is true         //    visible: true,      // optional, default is true         //    displayName: 'Foo', // optional         //    readonly: false,    // optional, default is false         // },         // ...

        img_array: {             type: cc.SpriteFrame,             default: [],         },

        atlas_array: {             default: [],             type: cc.SpriteAtlas,         },

        sound_array: {             default: [],             url: cc.AudioClip,         },

        prefab_array: {             default: [],             type: cc.Prefab,         },     },

    // use this for initialization     onLoad: function () {

    },

    // called every frame, uncomment this function to activate update callback     // update: function (dt) {

    // }, });

========================================================= 預載入JS: cc.Class({     extends: cc.Component,

    properties: {         // foo: {         //    default: null,      // The default value will be used only when the component attaching         //                           to a node for the first time         //    url: cc.Texture2D,  // optional, default is typeof default         //    serializable: true, // optional, default is true         //    visible: true,      // optional, default is true         //    displayName: 'Foo', // optional         //    readonly: false,    // optional, default is false         // },         // ...

        wait: {             type: cc.Node,             default: null,         },

        progress_label: {             type: cc.Label,             default: null,         },     },

    // use this for initialization     onLoad: function () {         this.wait.active = false;         this.progress_label.string = "0%";     },

    goto_roadmap: function() {         // 你在做場景切換的時候,如果你直接切換過去,         // 由於下一個場景一定要先載入完它所需要的資源,那麼一定會卡住一段時間;         // 會在這裡加上我們的等待介面,加入,場景載入的等待場景;         this.wait.active = true;         cc.loader.onProgress = function(completedCount, totalCount, item){             console.log("completedCount:" + completedCount + ",totalCount:" + totalCount);             var per = Math.floor(completedCount * 100 / totalCount);             this.progress_label.string = per + "%";         }.bind(this);

        // 預載入         cc.director.preloadScene("roadmap_scene", function() {             cc.loader.onProgress = null;             cc.director.loadScene("roadmap_scene");         });         // end      },

    // called every frame, uncomment this function to activate update callback     // update: function (dt) {

    // }, });