You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.5 KiB
85 lines
2.5 KiB
import { EBundleName } from "../const/GameEnum";
|
|
import ResLoad, { CCAssetType } from "./ResLoad";
|
|
|
|
/**
|
|
* 资源加载项
|
|
* 负责一组资源列表的加载
|
|
*/
|
|
export default class ResLoadItem{
|
|
/** 加载模式 */
|
|
private m_loadBundle: EBundleName |string;
|
|
private type:CCAssetType;
|
|
/** 加载关键键值 */
|
|
private m_key: any;
|
|
/** 加载完成回调 */
|
|
private m_comBack: any;
|
|
/** 加载进度回调 */
|
|
private m_onProgress: any;
|
|
|
|
/** 资源路径列表 */
|
|
private m_res: any;
|
|
|
|
/** 获取关键键值 */
|
|
public get key(): any {
|
|
return this.m_key;
|
|
}
|
|
|
|
/**
|
|
* 初始化
|
|
* @param _res 资源列表
|
|
* @param _mode 加载模式
|
|
* @param _key 关键键值
|
|
* @param _comBack 加载完成时的回调函数
|
|
* @param _onProgress 加载进度回调
|
|
*/
|
|
public constructor(_res: any, _mode: EBundleName|string,type:CCAssetType, _key?: any, _comBack?: Function, _onProgress?: Function) {
|
|
this.m_res = _res;
|
|
this.type = type;
|
|
this.m_loadBundle = _mode;
|
|
this.m_key = _key;
|
|
this.m_comBack = _comBack;
|
|
this.m_onProgress = _onProgress;
|
|
}
|
|
|
|
/**
|
|
* 加载资源
|
|
* @param onCompleted 完成时回调
|
|
* @param _onProgress 加载进度回调
|
|
*/
|
|
public load(onCompleted: any, _onProgress?: any) {
|
|
//包装进度回调
|
|
let __onProgress: any = _onProgress;
|
|
if (__onProgress && this.m_onProgress) {
|
|
__onProgress = (this, (i) => {
|
|
_onProgress(i);
|
|
this.m_onProgress(i);
|
|
});
|
|
} else if (this.m_onProgress) {
|
|
__onProgress = this.m_onProgress;
|
|
}
|
|
if (this.m_comBack) {
|
|
if (!onCompleted) {
|
|
ResLoad.Ins.Load(this.m_res, this.m_loadBundle, this.type, this.m_comBack, __onProgress);
|
|
} else {
|
|
ResLoad.Ins.Load(this.m_res, this.m_loadBundle, this.type, ((e, res) => {
|
|
this.m_comBack(e, res);
|
|
onCompleted(e, res);
|
|
}).bind(this), __onProgress);
|
|
}
|
|
} else {
|
|
ResLoad.Ins.Load(this.m_res,this.m_loadBundle,this.type, onCompleted, __onProgress);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 异步加载资源
|
|
* @param _onProgress 加载进度回调
|
|
*/
|
|
public loadAsync(_onProgress?: Function): Promise<void> {
|
|
return new Promise<void>((r) => {
|
|
this.load(( () => {
|
|
r();
|
|
}).bind(this), _onProgress);
|
|
});
|
|
}
|
|
}
|