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(url: string, type: typeof cc.Asset, progressCallback?: (completedCount: number, totalCount: number, item: any) => void): Promise{ 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); } }