子包加载

优质
小牛编辑
129浏览
2023-12-01

1.支持分包条件

手q 版本7.7.5

老版本手q 不支持分包加载,会依旧使用整包模式。 Xcode 工程开发不支持分包加载。

2.配置分包

a.在gameConfig.json 中配置分包,标准格式如下:

{
    ...
    "viewMode":1,
    "subpackages": [
                    {
                        "name": "text",
                        "root": "subpack1"
                    },
                    {
                        "name": "image",
                        "root": "subpack2"
                    }
                    ]
    ...
}

在gameConfig.json 中配置一个subpackages的列表字段,这个字段未配置或配置的子包数量为0,则认为不使用分包功能。

b.允许配置多个分包,每个分包的目录必须是项目的根目录下的一级子目录

[
    main.js
    gameConfig.json
    subpack1/
            --main.js  //子包1 入口文件
            --a.png    //子包2 资源
    subpack2/
            --main.js  //子包2 入口文件
            --b.mp3    //子包2 资源
]

c.每个分包必须配置一个name 字段和一个root 字段,name 用于标识不同的子包,不同子包名称name不能相同,所包含的目录root 不能相同。

d.除配置在子包内的资源会被打包到子包中外,其他的根目录下的资源会被打包成一个master包。

3.使用分包加载

使用 BK.loadSubpackage(object)进行子包加载后,会将下载并且加载子包,并加载子包的main.js入口文件。

object 属性

名称类型说明
namestring子包名。对应在gameConfig.json配置的中子包name属性
var task = BK.loadSubpackage(
  {
    name:"text",  
    success:function(succInfo)
    {
      BK.Console.log("SubPackage name:"+succInfo.name+" loadSubpackage success");
    },
    fail:function(failInfo)
    {
      BK.Console.log("SubPackage name:"failInfo.name+" loadSubpackage failed code"+failInfo.code+" msg:"+failInfo.msg);
    },
    complete:function()
    {
      BK.Console.log("loadSubpackage complete");
    }
  }
);
task.onProgressUpdate(function (progress:number){
  BK.Console.log("loadSubpackage Progress:"+progress);
});