52 lines
1.9 KiB
TypeScript
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);
|
|
}
|
|
}
|