/* * @Author: your name * @Date: 2021-06-25 21:34:25 * @LastEditTime: 2021-07-04 17:20:46 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \rocketMan\assets\script\manager\bundleManager.ts */ import { Log, LOG_TAG } from "../framework/log/Log"; import AudioManager from "../framework/music/AudioManager"; import Utils from "../framework/utils/utils"; const { ccclass, property } = cc._decorator; @ccclass class bundleManager { private _localResIsLoad = false; private bundleArr: cc.AssetManager.Bundle[] = []; private bundleName = ['spine', 'UI', 'dungeon', 'levels', 'music','level3','level4','level5'] public bundleTotal: number = this.bundleName.length; //总的分包数 private _total: number = 0; //当前已经下载完的包数 load() { this.loadSubpackage(); } loadSubpackage() { console.log('zh: loadSubpackage ,bundleTotal=',+this.bundleTotal) if (this._total >= this.bundleTotal) { return; } let self = this; let name = Utils.getPlatformName(); if (name) { let subName = self.bundleName[self._total]; if (name === 'qg') { subName = 'usr_' + self.bundleName[self._total]; } window[name].loadSubpackage({ name: subName, success: function (res) { self.loadBundle(self.bundleName[self._total]); }, fail: (err) => { console.log('loadSubpackage fail', err); } }) } else { self.loadBundle(self.bundleName[self._total]); } } //下载单个分包 loadSimpleSubpk(subpkName: string, cb?: Function) { let self = this; let name = Utils.getPlatformName(); if (name) { let subName = subpkName; if (name === 'qg') { subName = 'usr_' + self.bundleName[self._total]; } window[name].loadSubpackage({ name: subName, success: function (res) { cc.assetManager.loadBundle(subName, (err, bundle) => { if (err) { return console.error(err); } Log.log(LOG_TAG.DEBUG, '加载分包' + subName + '成功') if (cb) { cb() }; }); }, fail: (err) => { console.log('loadSubpackage fail', err); } }) } else { cc.assetManager.loadBundle(subpkName, (err, bundle) => { if (err) { return console.error(err); } Log.log(LOG_TAG.DEBUG, '加载分包' + subpkName + '成功') if (cb) { cb() }; }); } } /** * 下载分包 * @param bundleName 包名 * @param cb 回调 */ loadBundle(bundleName: string, cb?: Function) { var self = this; cc.assetManager.loadBundle(bundleName, (err, bundle) => { if (err) { return console.error(err); } self.bundleArr.push(bundle); Log.log(LOG_TAG.DEBUG, '加载分包' + bundleName + '成功') if (self._total < self.bundleTotal) { self._total += 1; } setTimeout(() => { self.loadSubpackage(); }, 100); if (cb) { cb() }; }); } /** * 通过分包名获取分包 * @param bundleName 分包名 * @returns 返回需要的分包 */ getBundleByName(bundleName: string): cc.AssetManager.Bundle { Log.log(LOG_TAG.DEBUG, 'getBundleByName: ' + bundleName) //console.info(' self.bundleArr=', this.bundleArr) let self = this; for (let i = 0; i < self.bundleArr.length; ++i) { if (self.bundleArr[i].name == bundleName) { return self.bundleArr[i]; } } Log.log(LOG_TAG.DEBUG, bundleName + 'bunle is no found!!!!!!!!!!!!!!!') return undefined; } /** * 设置图片 * @param bundleName 分包名 * @param frameName 图片名 * @param targetNode 目标节点 */ setBundleFrame(bundleName: string, frameName: string, targetNode?, cbk?) { let bundle = this.getBundleByName(bundleName); bundle.load(frameName, cc.SpriteFrame, (err, spriteFrames) => { if (!targetNode) { cbk(spriteFrames); return; } if (spriteFrames && targetNode.isValid) { targetNode.getComponent(cc.Sprite).spriteFrame = spriteFrames; } }) } getBunleTotal() { return this._total; } public set localResIsload(boean: boolean) { this._localResIsLoad = boean; } public get localResIsload() { return this._localResIsLoad; } } export default new bundleManager()