47 lines
1.2 KiB
TypeScript
Raw Normal View History

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<T extends Asset>(res:string,onComplete?:((err: Error | null, data: T) => void)){
app.tbRes.get().load<T>(res,onComplete)
}
static loadSpriteFrame(res:string,sprite:Sprite,comp:Component){
this.load<SpriteFrame>(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();
}
})
}
}