SubPackageLoader.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { _decorator, Component, Node, sys } from 'cc';
  2. const { ccclass, property } = _decorator;
  3. @ccclass('SubPackageLoader')
  4. export class SubPackageLoader {
  5. static load(packages: string[], progressCallBack: Function, completeCallBack: Function, errorCallback?: Function): void {
  6. console.log("平台:" + sys.browserType);
  7. // switch (sys.browserType) {
  8. // case sys.BROWSER_TYPE_WECHAT:
  9. this.__loadWX(packages, progressCallBack, completeCallBack, errorCallback);
  10. // break;
  11. // default:
  12. // break;
  13. // }
  14. }
  15. private static loadSubpackage(index: number, packages: string[], progressCallBack: Function, completeCallBack: Function, errorCallback?: Function): void {
  16. let loadTask: any;
  17. let wx: any = window["wx"];
  18. let packageName: string = packages[index];
  19. index++;
  20. loadTask = wx.loadSubpackage({
  21. name: packageName,
  22. success: (res) => {
  23. if (index < packages.length) {
  24. this.loadSubpackage(index, packages, progressCallBack, completeCallBack, errorCallback)
  25. } else {
  26. if (completeCallBack) {
  27. completeCallBack();
  28. }
  29. }
  30. },
  31. fail: (err) => {
  32. console.error(err);
  33. if (errorCallback) {
  34. errorCallback(packageName + "加载出错!");
  35. }
  36. }
  37. })
  38. loadTask.onProgressUpdate(res => {
  39. if (progressCallBack) {
  40. progressCallBack(res.progress);
  41. }
  42. })
  43. }
  44. /**
  45. * 微信
  46. * @param packages
  47. * @param progressCallBack
  48. * @param completeCallBack
  49. */
  50. private static __loadWX(packages: string[], progressCallBack: Function, completeCallBack: Function, errorCallback?: Function): void {
  51. console.log("wx subpackage load");
  52. let loadIndex: number = 0;
  53. let total: number = packages.length;
  54. this.loadSubpackage(loadIndex, packages, progressCallBack, completeCallBack, errorCallback)
  55. }
  56. }