대상 탱크의 응용 실례

2661 단어
package 
{

	import flash.utils.Dictionary;

	import flash.utils.getDefinitionByName;

	import flash.utils.getQualifiedClassName;

	/**  
	
	*    
	
	* @author yanghongbin  
	
	*  
	
	*/

	public class DisplayObjectPool
	{

		private static var instance:DisplayObjectPool;

		/**  
		
		*   dict  
		
		*/

		private var objPoolDict:Dictionary = new Dictionary();

		public function DisplayObjectPool()
		{

		}

		public static function getInstance():DisplayObjectPool
		{

			if (instance == null)
			{

				instance = new DisplayObjectPool();

			}

			return instance;

		}

		/**  
		
		*  ,   
		
		* @param disObj    
		
		*  
		
		*/

		public function push(oldObj:Object):void
		{

			var objName:String = getQualifiedClassName(oldObj);

			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;

		}

	}

}

AS3 게임 개발에서 메모리 문제는 기본적으로 개발자가 가장 골치 아픈 것이다. 정부도 구체적인 메모리 최적화 지도가 없기 때문에 개발자가 스스로 모색할 수밖에 없다.목록의 레벨removechild, 이벤트 감청을 제때에 제거하거나 약한 인용을 표시합니다.이런 것들은 모두 메모리 문제에 주의해야 한다. 왜냐하면 AS3의 쓰레기 회수 메커니즘은 그렇게'부지런한'것이 아니기 때문에 쓰레기 회수는 특정한 시간이나 메모리가 일정한 병목에 도달했을 때만 이루어진다.그래서 개발자는 메모리를 절약하기 위해 디테일한 처리에 각별히 주의해야 한다.대상지는 좋은 방법이다.예를 들어 총알을 만들어 사격할 때 총알은 매번 new에 나온다.이렇게 하면 틀림없이 메모리를 매우 소모할 것이다.총알이 new 나오면 화면에 이 총알이 필요 없어요.객체 풀에 넣을 수 있습니다.다시 new일 때 중복 활용 가능합니다.나는 대상지의 종류를 하나 썼다.이 종류는 단례적인 것이다.디렉터리 집합으로 이루어진 저장 대상입니다.KEY는 대상의 가방 이름 + 클래스 이름입니다. 대응하는 것은array 그룹입니다.중복 사용 가능한 대상이 저장되어 있습니다.

좋은 웹페이지 즐겨찾기