marineparkclient/assets/common/res/ResHelper.ts
2023-08-15 11:09:12 +08:00

52 lines
1.9 KiB
TypeScript

export class LoadProgress {
public url: string;
public completedCount: number;
public totalCount: number;
public item: any;
public cb?: Function;
}
export default class ResHelper {
/** 加载进度 */
public static loadProgress = new LoadProgress();
/** 加载资源 */
public static loadResAsync<T>(url: string, type: typeof cc.Asset, progressCallback?: (completedCount: number, totalCount: number, item: any) => void): Promise<T>{
if (!url || !type) {
cc.error("参数错误", url, type);
return;
}
ResHelper.loadProgress.url = url;
if(progressCallback) {
this.loadProgress.cb = progressCallback;
}
return new Promise((resolve, reject) => {
//cc.assetManager.downloader.download(url)
cc.resources.load(url,type,this._progressCallback,function(err,prefab:any){
if (err) {
cc.error(`${url} [资源加载] 错误 ${err}`);
resolve(null);
}else {
resolve(prefab);
}
// 加载完毕了,清理进度数据
ResHelper.loadProgress.url = '';
ResHelper.loadProgress.completedCount = 0;
ResHelper.loadProgress.totalCount = 0;
ResHelper.loadProgress.item = null;
ResHelper.loadProgress.cb = null;
})
});
}
/**
* 加载进度
* cb方法 其实目的是可以将loader方法的progress
*/
private static _progressCallback(completedCount: number, totalCount: number, item: any) {
ResHelper.loadProgress.completedCount = completedCount;
ResHelper.loadProgress.totalCount = totalCount;
ResHelper.loadProgress.item = item;
ResHelper.loadProgress.cb && ResHelper.loadProgress.cb(completedCount, totalCount, item);
}
}