Skip to content

Latest commit

 

History

History
executable file
·
67 lines (47 loc) · 3.36 KB

README.md

File metadata and controls

executable file
·
67 lines (47 loc) · 3.36 KB

一、预加载资源组

在配置文件加载完成后,我们可以调用RES.loadGroup(name:string,priority:number=0)开始预加载配置中的一组资源。该函数需要两个参数,参数"name"对应配置文件中的资源组名。预加载可以在游戏启动时,也可以是某个面板被打开前,调用时机由具体项的目逻辑确定。代码如下:

RES.addEventListener( RES.ResourceEvent.GROUP_COMPLETE, this.onResourceLoadComplete, this );
RES.addEventListener( RES.ResourceEvent.GROUP_PROGRESS, this.onResourceProgress, this );
RES.addEventListener( RES.ResourceEvent.GROUP_LOAD_ERROR, this.onResourceLoadErr, this );
RES.loadGroup( "preload" );

事件对应的资源组

这里需要注意,组加载事件回调函数里的写法,需要使用event.groupName判断下这个事件是属于哪个资源组,因为可能有多个资源组同时在加载。示例代码如下:

private onResourceProgress( event:RES.ResourceEvent ):void {
    if( event.groupName=="preload" ){
        this.loadingView.setProgress( event.itemsLoaded,event.itemsTotal );
    }
}

资源组加载失败处理

由于网络等原因,可能造成资源加载失败,这种情况下将会派发GROUPLOADERROR事件,可以在事件处理中重新加载资源:

private onResourceLoadErr( event:RES.ResourceEvent ):void {
    RES.loadGroup( event.groupName );
}

在复杂的网络环境,可能会出现多次加载失败,这时我们可能需要在一定的失败次数之后停止加载,因为可能网络已经失去连接,那么我们可以通过对加载失败次数进行计数。 假设有一个成员countGroupError用来计数加载失败次数,其初始值为0,则处理函数修改为:

private onResourceLoadErr( event:RES.ResourceEvent ):void {
    if( ++this.countGroupError < 3 ){
        RES.loadGroup( event.groupName );
    }else{
        /// 弹出网络失去连接提示等
    }
}

对于多个资源组同时加载的情况,countGroupError可以使用一个以groupName为键的哈希数组来记录每个资源组的加载失败次数。

同时进行多资源组加载时的优先级控制

若同时启动多个资源组一起加载,比如在加载"preload"前,我们希望先加载一个更小的"loading"资源组,以提供显示"preload"组加载进度的素材,可以使用RES.loadGroup()的第二个参数,为"loading"组传入一个优先级更大的数字,来迫使loading组在preload前加载完成,代码如下:

RES.loadGroup("loading",1); 
RES.loadGroup("preload",0);

二、运行时动态创建资源组

若资源组无法预先配置在文件中,需要运行时才能动态确定的,我们可以通过调用RES.createGroup(groupName:string,keys:Array)方法,动态创建一个资源组,再加载它。

groupName:是要创建的资源组组名。

keys:这个资源组包含的资源列表。里面的key对应配置文件里的name属性或一个资源组名,若key是资源组名将类似合并资源组的功能。你可以同时传入多个已存在资源组名,合并成一个新资源组。

动态创建资源组之后,调用loadGroup()一次加载完。

注意:createGroup()方法是基于已存在的配置属性操作的,调用这个方法前请先确认RES的配置文件已经加载完成了。也就是在监听到ResourceEvent.CONFIG_COMPLETE事件之后。