egret对象池使用

/** 对象池*/
class DisplayObjectPool {
	public constructor() {}

	/**
	 * 作为对象池的词典dict
	 */
	private objPoolDict:any = {};
	
	// singleton
	private static instance:DisplayObjectPool;
	public static getInstance():DisplayObjectPool
	{
		if (this.instance == undefined)
		{
			this.instance = new DisplayObjectPool();
		}
		return this.instance;


	}

	/**
	 * 向对象池中放入对象,以便重复利用
	 */
	public push(oldObj:Object):void
	{
		// egret.getQualifiedClassName() --> 返回对象的完全限定类名
		let objName:string = egret.getQualifiedClassName(oldObj);
		if (oldObj == null) return;
		if (this.objPoolDict[objName] == undefined) {
			this.objPoolDict[objName] = [];
		}
		if((<any[]>this.objPoolDict[objName]).indexOf(oldObj) == -1){
			this.objPoolDict[objName].push(oldObj);
		}
	}


	/**
	 * 从对象池中取出需要的对象
	 * @param targetObj 需要的对象类类名,没必要必须是类实例名 类名就可以
	 * @return 取出的相应对象
	 *
	 */
	public pop(targetObj:Object):any
	{
		let objName:string = egret.getQualifiedClassName(targetObj);
		if (this.objPoolDict[ objName ] != undefined  && this.objPoolDict[ objName ].length > 0) {
			return this.objPoolDict[ objName ].pop() as Object;
		}
		let objClass:any = egret.getDefinitionByName(objName);
		let obj:Object = new objClass as Object;
		return obj;

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值