import { _decorator, Sprite, SpriteFrame} from 'cc'; import { ch } from '../../ch/ch'; class HeadIcon { private _map:Map=new Map(); private _map_uid:Map=new Map(); constructor(){ } public async showIcon(uid:string,remoteUrl:string,sp:Sprite=null,def?:SpriteFrame):Promise{ if(!remoteUrl || remoteUrl=="image"){ if(sp)sp.spriteFrame=def; return; } if(this._map.has(uid)){ const spr=this._map.get(uid); if(sp)sp.spriteFrame=spr; return spr; }else{ const map=this._map; const map_uid=this._map_uid; if(sp && sp.isValid ) map_uid.set(sp,uid); const spriteFrame = await ch.util.loadImage(remoteUrl); if(sp && sp.isValid )if(map_uid.get(sp)==uid)sp.spriteFrame=spriteFrame; map.set(uid,spriteFrame); return spriteFrame; } } public clean():void{ this._map.clear(); this._map_uid.clear(); } } export default function get_new_head_icon():HeadIcon { return new HeadIcon();}