官方提供 IAssetAdapter 之實作
class AssetAdapter implements eui.IAssetAdapter {
/**
* @language zh_CN
* 解析素材
* @param source 待解析的新素材标识符
* @param compFunc 解析完成回调函数,示例:callBack(content:any,source:string):void;
* @param thisObject callBack的 this 引用
*/
public getAsset(source: string, compFunc: Function, thisObject: any): void {
// 請自己加上 console.log 觀察, 當 eui 用到的圖片顯示於舞台時, 或是滑鼠點擊按鈕按鈕換圖時都會觸發
console.log('AssetAdapter:', source);
// 當找到圖片資源時
function onGetRes(data: any): void {
// 執行回呼函示
compFunc.call(thisObject, data, source);
}
// 檢查 default.res.json 是否有圖片資源
if (RES.hasRes(source)) {
// 同步獲取資源
let data = RES.getRes(source);
if (data) {
onGetRes(data);
}
else {
// 異步獲取資源
RES.getResAsync(source, onGetRes, this);
}
}
else {
// 用絕對路徑找資源
RES.getResByUrl(source, onGetRes, this, RES.ResourceItem.TYPE_IMAGE);
}
}
}
簡化
class AssetAdapter implements eui.IAssetAdapter {
public getAsset(source: string, compFunc: Function, thisObject: any): void {
let onGetRes = (data) => compFunc.call(thisObject, data, source);
if (RES.hasRes(source)) {
let data = RES.getRes(source);
data ? onGetRes(data) : RES.getResAsync(source, onGetRes, this);
} else {
RES.getResByUrl(source, onGetRes, this, RES.ResourceItem.TYPE_IMAGE);
}
}
}
沒有留言:
張貼留言