Files
18xchat/assets/Scripts/chat18x/manager/DetailImageItemPool.ts
T
2025-09-15 11:55:22 +08:00

60 lines
1.2 KiB
TypeScript

import { NodePool, instantiate, Node, isValid } from "cc";
import { DetailImageItem } from "../uiitems/DetailImageItem";
export class DetailImageItemPool {
private static _instance: DetailImageItemPool = null;
private _pool: NodePool;
private _template: Node = null;
private constructor() {
this._pool = new NodePool();
}
public static get Instance(): DetailImageItemPool {
if (!this._instance) {
this._instance = new DetailImageItemPool();
}
return this._instance;
}
public setTemplate(template: Node): void {
this._template = template;
}
public get(): Node {
let node: Node = null;
if (this._pool.size() > 0) {
node = this._pool.get();
} else {
if (this._template) {
node = instantiate(this._template);
}
}
if (node) {
const item = node.getComponent(DetailImageItem);
if (item && item.reset) {
item.reset();
}
}
return node;
}
public put(node: Node): void {
if (node && isValid(node)) {
node.removeFromParent();
this._pool.put(node);
}
}
public clear(): void {
this._pool.clear();
}
public getPoolSize(): number {
return this._pool.size();
}
}