bundleManager.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-06-25 21:34:25
  4. * @LastEditTime: 2021-07-04 17:20:46
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: \rocketMan\assets\script\manager\bundleManager.ts
  8. */
  9. import { Log, LOG_TAG } from "../framework/log/Log";
  10. import AudioManager from "../framework/music/AudioManager";
  11. import Utils from "../framework/utils/utils";
  12. const { ccclass, property } = cc._decorator;
  13. @ccclass
  14. class bundleManager {
  15. private _localResIsLoad = false;
  16. private bundleArr: cc.AssetManager.Bundle[] = [];
  17. private bundleName = ['spine', 'UI', 'dungeon', 'levels', 'music','level3','level4','level5']
  18. public bundleTotal: number = this.bundleName.length; //总的分包数
  19. private _total: number = 0; //当前已经下载完的包数
  20. load() {
  21. this.loadSubpackage();
  22. }
  23. loadSubpackage() {
  24. console.log('zh: loadSubpackage ,bundleTotal=',+this.bundleTotal)
  25. if (this._total >= this.bundleTotal) {
  26. return;
  27. }
  28. let self = this;
  29. let name = Utils.getPlatformName();
  30. if (name) {
  31. let subName = self.bundleName[self._total];
  32. if (name === 'qg') {
  33. subName = 'usr_' + self.bundleName[self._total];
  34. }
  35. window[name].loadSubpackage({
  36. name: subName,
  37. success: function (res) {
  38. self.loadBundle(self.bundleName[self._total]);
  39. },
  40. fail: (err) => {
  41. console.log('loadSubpackage fail', err);
  42. }
  43. })
  44. } else {
  45. self.loadBundle(self.bundleName[self._total]);
  46. }
  47. }
  48. //下载单个分包
  49. loadSimpleSubpk(subpkName: string, cb?: Function) {
  50. let self = this;
  51. let name = Utils.getPlatformName();
  52. if (name) {
  53. let subName = subpkName;
  54. if (name === 'qg') {
  55. subName = 'usr_' + self.bundleName[self._total];
  56. }
  57. window[name].loadSubpackage({
  58. name: subName,
  59. success: function (res) {
  60. cc.assetManager.loadBundle(subName, (err, bundle) => {
  61. if (err) {
  62. return console.error(err);
  63. }
  64. Log.log(LOG_TAG.DEBUG, '加载分包' + subName + '成功')
  65. if (cb) { cb() };
  66. });
  67. },
  68. fail: (err) => {
  69. console.log('loadSubpackage fail', err);
  70. }
  71. })
  72. } else {
  73. cc.assetManager.loadBundle(subpkName, (err, bundle) => {
  74. if (err) {
  75. return console.error(err);
  76. }
  77. Log.log(LOG_TAG.DEBUG, '加载分包' + subpkName + '成功')
  78. if (cb) { cb() };
  79. });
  80. }
  81. }
  82. /**
  83. * 下载分包
  84. * @param bundleName 包名
  85. * @param cb 回调
  86. */
  87. loadBundle(bundleName: string, cb?: Function) {
  88. var self = this;
  89. cc.assetManager.loadBundle(bundleName, (err, bundle) => {
  90. if (err) {
  91. return console.error(err);
  92. }
  93. self.bundleArr.push(bundle);
  94. Log.log(LOG_TAG.DEBUG, '加载分包' + bundleName + '成功')
  95. if (self._total < self.bundleTotal) {
  96. self._total += 1;
  97. }
  98. setTimeout(() => {
  99. self.loadSubpackage();
  100. }, 100);
  101. if (cb) { cb() };
  102. });
  103. }
  104. /**
  105. * 通过分包名获取分包
  106. * @param bundleName 分包名
  107. * @returns 返回需要的分包
  108. */
  109. getBundleByName(bundleName: string): cc.AssetManager.Bundle {
  110. Log.log(LOG_TAG.DEBUG, 'getBundleByName: ' + bundleName)
  111. //console.info(' self.bundleArr=', this.bundleArr)
  112. let self = this;
  113. for (let i = 0; i < self.bundleArr.length; ++i) {
  114. if (self.bundleArr[i].name == bundleName) {
  115. return self.bundleArr[i];
  116. }
  117. }
  118. Log.log(LOG_TAG.DEBUG, bundleName + 'bunle is no found!!!!!!!!!!!!!!!')
  119. return undefined;
  120. }
  121. /**
  122. * 设置图片
  123. * @param bundleName 分包名
  124. * @param frameName 图片名
  125. * @param targetNode 目标节点
  126. */
  127. setBundleFrame(bundleName: string, frameName: string, targetNode?, cbk?) {
  128. let bundle = this.getBundleByName(bundleName);
  129. bundle.load(frameName, cc.SpriteFrame, (err, spriteFrames) => {
  130. if (!targetNode) {
  131. cbk(spriteFrames);
  132. return;
  133. }
  134. if (spriteFrames && targetNode.isValid) {
  135. targetNode.getComponent(cc.Sprite).spriteFrame = spriteFrames;
  136. }
  137. })
  138. }
  139. getBunleTotal() {
  140. return this._total;
  141. }
  142. public set localResIsload(boean: boolean) {
  143. this._localResIsLoad = boean;
  144. }
  145. public get localResIsload() {
  146. return this._localResIsLoad;
  147. }
  148. }
  149. export default new bundleManager()