대상 탱크의 응용 실례
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 그룹입니다.중복 사용 가능한 대상이 저장되어 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.