熱門文章

Ⓔeui.IAssetAdapter 用法

官方提供 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);
        }
    }
}

沒有留言:

張貼留言