------------恢復內容開始------------
-
微信小游戲為什么要有開始資源加載頁?
當小游戲包過大的時候,我們如何優化包的大小,最直接的先把圖片或者聲音等資源放到雲端,等小游戲初始化后再從雲端下載到本地,而小游戲包里只放代碼和幾張簡單的加載圖。
-
為什么微信加載資源的頁面和初始化的頁面是兩個頁面?
微信小游戲自帶初始化頁面是,微信從雲端下載小游戲代碼到本地(這個是自帶的,不需要處理,更沒有必要再自定義)。資源加載頁是,當小游戲初始化完成后再下載資源圖片和其他媒體素材,如果沒有下載進度頁面會停住用戶體驗不好,所以需要一個素材下載的進度條頁面,下載完成,進度條走完,就可以進入游戲。
-
雲存儲哪家好,做小游戲當然微信自帶雲存儲!
我們將媒體資源放到遠端文
件服務器,CDN等等,但是相對於現在流行的比如阿里雲,AWS,騰訊雲等等,甚至什么雲盤啥的都不如微信自帶的雲存儲。因為免費5 個 G!!!!!足夠了。而且上傳文件后會生成一個id,通過微信下載函數傳入此Id,就可以下載了!
自己動手豐衣足食
-
首先,我們需要將游戲的媒體資源放到雲端,這里我們用微信官方的雲存儲
- 在開發平台界面打開雲開發平台,
- 會初始化些步驟,很簡單
-
打開存儲,這幾我們可以新建文件夾,以及文件
-
編寫下載文件
- 將所有要下載的文件id,用數組記錄下來
export const booms = [{
name: 'boom1', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/1.png', }, { name: 'boom2', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/2.png', }, { name: 'boom3', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/3.png', }, { name: 'boom4', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/4.png', }, { name: 'boom5', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/5.png', } ]
- 批量下載
-
for (let obb of booms) { wx.cloud.downloadFile({ fileID: obb.fileId, // 文件 ID success: res => { index++ // 返回臨時文件路徑 let obj = obb obj.url = res.tempFilePath list.push(obj) if (netResourse.length == list.length) { databus.allImages = list loadingImage() new Main(ctx) } initRender(ctx, index / netResourse.length * 100) }, fail: console.error }) }
下載之后會返回一個本地緩存tempFilePath,在new image()直接賦值給.src屬性 這個路勁就是在本機內存里,可以理解是游戲包里的相對路勁
並且記錄返回數,這樣就知道和總下載數的比例,實現進度條的百分比了
------------恢復內容結束------------
-
微信小游戲為什么要有開始資源加載頁?
當小游戲包過大的時候,我們如何優化包的大小,最直接的先把圖片或者聲音等資源放到雲端,等小游戲初始化后再從雲端下載到本地,而小游戲包里只放代碼和幾張簡單的加載圖。
-
為什么微信加載資源的頁面和初始化的頁面是兩個頁面?
微信小游戲自帶初始化頁面是,微信從雲端下載小游戲代碼到本地(這個是自帶的,不需要處理,更沒有必要再自定義)。資源加載頁是,當小游戲初始化完成后再下載資源圖片和其他媒體素材,如果沒有下載進度頁面會停住用戶體驗不好,所以需要一個素材下載的進度條頁面,下載完成,進度條走完,就可以進入游戲。
-
雲存儲哪家好,做小游戲當然微信自帶雲存儲!
我們將媒體資源放到遠端文
件服務器,CDN等等,但是相對於現在流行的比如阿里雲,AWS,騰訊雲等等,甚至什么雲盤啥的都不如微信自帶的雲存儲。因為免費5 個 G!!!!!足夠了。而且上傳文件后會生成一個id,通過微信下載函數傳入此Id,就可以下載了!
自己動手豐衣足食
-
首先,我們需要將游戲的媒體資源放到雲端,這里我們用微信官方的雲存儲
- 在開發平台界面打開雲開發平台,
- 會初始化些步驟,很簡單
-
打開存儲,這幾我們可以新建文件夾,以及文件
-
編寫下載文件
- 將所有要下載的文件id,用數組記錄下來
export const booms = [{
name: 'boom1', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/1.png', }, { name: 'boom2', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/2.png', }, { name: 'boom3', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/3.png', }, { name: 'boom4', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/4.png', }, { name: 'boom5', fileId: 'cloud://imge8-5z6gt.696d-imge8-5z6gt-1300789023/booms/5.png', } ]
- 批量下載
-
for (let obb of booms) { wx.cloud.downloadFile({ fileID: obb.fileId, // 文件 ID success: res => { index++ // 返回臨時文件路徑 let obj = obb obj.url = res.tempFilePath list.push(obj) if (netResourse.length == list.length) { databus.allImages = list loadingImage() new Main(ctx) } initRender(ctx, index / netResourse.length * 100) }, fail: console.error }) }
下載之后會返回一個本地緩存tempFilePath,在new image()直接賦值給.src屬性 這個路勁就是在本機內存里,可以理解是游戲包里的相對路勁
並且記錄返回數,這樣就知道和總下載數的比例,實現進度條的百分比了,並且當進度條100%時 開始游戲
送上我的小游戲 一開始界面就是下載資源頁 可以看看效果