AS3를 쓰는 데는 좋은 인코딩 습관이 필요하다

1668 단어 as3

AS3의 쓰레기 회수는 자동이기 때문에, 인용된 대상이 있거나 삭제된 사건이 있는지 확인하면, unload와removed Child가 있을 때 메모리에서 완전히 제거할 수 없습니다.
그래서 우리는 코드를 쓸 때 반드시 기억해야 한다.
변수 또는 참조를 선언한 경우 다음을 수행하여 삭제해야 합니다.
var _mc=_movieClip
......
_mc=null
만약 하나의 그룹이 있다면, 안에 저장된 많은 다른 대상의 인용이 있다면, 이 그룹을null로 설정하는 것만으로는 안 되고, 모든 요소의 값도 비어 있는arr[i]=null로 설정해야 한다. 예를 들어
 
var _arry:Array=new Array();

for (var i=0; i<_mc.numChildren; i++) {
	var _mc = _mc.getChildAt(i) as MovieClip;
	arry.push(_mc);
}
 
 
clear:
 
for (var i=0; i<_arry.length; i++) {
	_arry[i] = null;
}

_arry = [];
 
 
2. 사건 수사도 제때에 제거해야 한다.
구체적으로 코드 세그먼트를 보십시오.
 
function removeSelf(e:Event):void {
	trace("remove me now....");
	removeEventListener(Event.ADDED_TO_STAGE, addStage);
	stage.removeEventListener(gamestate.GAMEBOX_NOTICE_CLOSED, toReady);
	removeEventListener(Event.REMOVED_FROM_STAGE, removeSelf);
	_lostTimer.removeEventListener(TimerEvent.TIMER, setLeftTime);
	try {
		new LocalConnection.connect("foo");
		new LocalConnection.connect("foo");
	} catch (error:Error) {
	}

	System.gc();

}

addEventListener(Event.REMOVED_FROM_STAGE,removeSelf);// 

 
 
3. 쓰레기 수거를 강제한다.
 try {
	new LocalConnection  .connect("foo");
	new LocalConnection  .connect("foo");
} catch (error:Error) {
}

System.gc();
 

좋은 웹페이지 즐겨찾기