SubPackageLoader.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. /**
  16. * 微信
  17. * @param packages
  18. * @param progressCallBack
  19. * @param completeCallBack
  20. */
  21. private static __loadWX(packages:string[],progressCallBack:Function,completeCallBack:Function,errorCallback?:Function):void{
  22. console.log("wx subpackage load");
  23. let wx:any=window["wx"];
  24. let packageName:string;
  25. let loadIndex:number=0;
  26. let total:number=packages.length;
  27. let loadTask:any;
  28. for (let index = 0; index < packages.length; index++) {
  29. packageName = packages[index];
  30. loadTask=wx.loadSubpackage({
  31. name:packageName,
  32. success:(res)=>{
  33. loadIndex++;
  34. if(loadIndex>=total){
  35. if(completeCallBack){
  36. completeCallBack();
  37. }
  38. }
  39. },
  40. fail:(err)=>{
  41. console.error(err);
  42. if(errorCallback){
  43. errorCallback(packageName+"加载出错!");
  44. }
  45. }
  46. })
  47. loadTask.onProgressUpdate(res=>{
  48. if(progressCallBack){
  49. progressCallBack(loadIndex+res.progress);
  50. }
  51. })
  52. }
  53. }
  54. }