فهرست منبع

Merge branch 'QQ'

xujialiang 4 سال پیش
والد
کامیت
5f679f11c8
1فایلهای تغییر یافته به همراه69 افزوده شده و 37 حذف شده
  1. 69 37
      assets/scripts/engines/utils/SubPackageLoader.ts

+ 69 - 37
assets/scripts/engines/utils/SubPackageLoader.ts

@@ -3,56 +3,88 @@ const { ccclass, property } = _decorator;
 
 @ccclass('SubPackageLoader')
 export class SubPackageLoader {
-    
-    static load(packages:string[],progressCallBack:Function,completeCallBack:Function,errorCallback?:Function):void{
-        console.log("平台:"+sys.browserType);
+
+    static load(packages: string[], progressCallBack: Function, completeCallBack: Function, errorCallback?: Function): void {
+        console.log("平台:" + sys.browserType);
         // switch (sys.browserType) {
-            // case sys.BROWSER_TYPE_WECHAT:
-                this.__loadWX(packages,progressCallBack,completeCallBack,errorCallback);
+        // case sys.BROWSER_TYPE_WECHAT:
+        this.__loadWX(packages, progressCallBack, completeCallBack, errorCallback);
         //         break;
-        
+
         //     default:
         //         break;
         // }
     }
 
+    private static loadSubpackage(index: number, packages: string[], progressCallBack: Function, completeCallBack: Function, errorCallback?: Function): void {
+        let loadTask: any;
+        let wx: any = window["wx"];
+        let packageName: string = packages[index];
+        console.log("加载分包:", packageName)
+        index++;
+        loadTask = wx.loadSubpackage({
+            name: packageName,
+            success: (res) => {
+                if (index < packages.length) {
+                    this.loadSubpackage(index, packages, progressCallBack, completeCallBack, errorCallback)
+                } else {
+                    if (completeCallBack) {
+                        completeCallBack();
+                    }
+                }
+            },
+            fail: (err) => {
+                console.error(err);
+                if (errorCallback) {
+                    errorCallback(packageName + "加载出错!");
+                }
+            }
+        })
+        loadTask.onProgressUpdate(res => {
+            if (progressCallBack) {
+                progressCallBack(res.progress);
+            }
+        })
+    }
+
     /**
      * 微信
      * @param packages 
      * @param progressCallBack 
      * @param completeCallBack 
      */
-    private static __loadWX(packages:string[],progressCallBack:Function,completeCallBack:Function,errorCallback?:Function):void{
+    private static __loadWX(packages: string[], progressCallBack: Function, completeCallBack: Function, errorCallback?: Function): void {
         console.log("wx subpackage load");
-        let wx:any=window["wx"];
-        let packageName:string;
-        let loadIndex:number=0;
-        let total:number=packages.length;
-        let loadTask:any;
-        for (let index = 0; index < packages.length; index++) {
-            packageName = packages[index];
-            loadTask=wx.loadSubpackage({
-                name:packageName,
-                success:(res)=>{
-                    loadIndex++;
-                    if(loadIndex>=total){
-                        if(completeCallBack){
-                            completeCallBack();
-                        }
-                    }
-                },
-                fail:(err)=>{
-                    console.error(err);
-                    if(errorCallback){
-                        errorCallback(packageName+"加载出错!");
-                    }
-                }
-            })
-            loadTask.onProgressUpdate(res=>{
-                if(progressCallBack){
-                    progressCallBack(loadIndex+res.progress);
-                }
-            })
-        }
+        let wx: any = window["wx"];
+        let packageName: string;
+        let loadIndex: number = 0;
+        let total: number = packages.length;
+        let loadTask: any;
+        this.loadSubpackage(loadIndex, packages, progressCallBack, completeCallBack, errorCallback)
+        // for (let index = 0; index < packages.length; index++) {
+        //     packageName = packages[index];
+        //     loadTask = wx.loadSubpackage({
+        //         name: packageName,
+        //         success: (res) => {
+        //             loadIndex++;
+        //             if (loadIndex >= total) {
+        //                 if (completeCallBack) {
+        //                     completeCallBack();
+        //                 }
+        //             }
+        //         },
+        //         fail: (err) => {
+        //             console.error(err);
+        //             if (errorCallback) {
+        //                 errorCallback(packageName + "加载出错!");
+        //             }
+        //         }
+        //     })
+        //     loadTask.onProgressUpdate(res => {
+        //         if (progressCallBack) {
+        //             progressCallBack(loadIndex + res.progress);
+        //         }
+        //     })
+        // }
     }
 }