对象池 2

package game1038.data{
		import flash.utils.Dictionary;
		import flash.utils.getDefinitionByName;
		import flash.utils.getQualifiedClassName;
		/** 
		 * 用于显示对象的对象池类  
		 */
		public class DisplayObjectPool {
			private static var _instance:DisplayObjectPool;
			/** 
			 *  作为对象池的词典dict 
			 */
			private var objPoolDict:Dictionary = new Dictionary  ;
			public function DisplayObjectPool() {}
			public static function get instance():DisplayObjectPool {
				if (_instance == null) {
					_instance = new DisplayObjectPool  ;
				}
				return _instance;
			}
			/** 
			 * 向对象池中放入对象,以便重复利用 
			 * @param disObj 要的放入对象 
			 
			 */
			public function push(oldObj:Object):void {
				var objName:String = getQualifiedClassName(oldObj);
				trace ("key -- > " + objName);
				if (oldObj == null) {
					return;
				}
				if (this.objPoolDict[objName] == null) {
					this.objPoolDict[objName] = [];
				}
				this.objPoolDict[objName].push(oldObj);
			}
			/** 
			 * 从对象池中取出需要的对象 
			 * @param targetObj 需要的对象类类名,没必要必须是类实例名 类名就可以 
			 * @return 取出的相应对象 
			 * 
			 */
			public function pop(targetObj:Object):Object {
				var objName:String = getQualifiedClassName(targetObj);
				trace(objName);
				if (this.objPoolDict[objName] != null && this.objPoolDict[objName].length > 0) {
					return this.objPoolDict[objName].pop()  as  Object;
				}
				var objClass:Class = getDefinitionByName(objName) as Class;
				var obj:Object = new objClass   as Object;
				return obj;
			}
		}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值