import { Asset } from "cc"; import { app } from "../App"; import { Sprite } from "cc"; import { SpriteFrame } from "cc"; import { Node } from "cc"; import { Component } from "cc"; export default class TbResource { static load(res:string,onComplete?:((err: Error | null, data: T) => void)){ app.tbRes.get().load(res,onComplete) } static loadSpriteFrame(res:string,sprite:Sprite,comp:Component){ this.load(res,(err,data:SpriteFrame) => { if(!data) return; if(!sprite.isValid || !comp.isValid) { //提前销毁 data.addRef(); data.decRef(); } sprite.spriteFrame = data; //添加引用标记 data.addRef(); //添加销毁资源引用 let onDestroy = comp["onDestroy"]; comp["onDestroy"] = () => { if(onDestroy) onDestroy.bind(comp)(); //销毁引用 if(sprite.isValid && sprite.spriteFrame == data) sprite.spriteFrame = null; data.decRef(); } }) } }