微信小遊戲-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) {
// }, });