12345678910111213141516171819202122232425262728293031323334353637 |
- import { _decorator, Sprite, SpriteFrame} from 'cc';
- import { ch } from '../../ch/ch';
- class HeadIcon {
- private _map:Map<string,SpriteFrame>=new Map();
- private _map_uid:Map<Sprite,string>=new Map();
- constructor(){
- }
- public async showIcon(uid:string,remoteUrl:string,sp:Sprite=null,def?:SpriteFrame):Promise<SpriteFrame>{
- 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();}
|