2011-11-14 2 views
0

좋아요. 그래서 저는 타워 방어 게임을 만들고 있습니다. 나는 더 이상 필요하지 않은 객체를 어떻게 제거해야합니까? (즉, 총알 객체가 목표에 도달했다고 말할 수 있습니다. 모든 인스턴트 메신저 개체를 보이지 않는 설정입니다). 약 1.5K 개체 이후 느리게 시작됩니다.AS3 게임이 느림 (많은 객체)

나는 약간의 연구를 해왔지만, 그것들은 어떤 유비쿼터스적인 방법으로 보이지 않는다. 너는 무엇을 추천한다. 제거에

감사

+0

당신은 어떤 게임 라이브러리를 사용하고 또는이 모든 단지 일반 표시 스택에? .visible 속성을 false로 설정하고 있습니까? – Hawks

+0

예, 라이브러리 없음 – dgamma3

+0

[Object Pools] (http://www.google.com/search?client=safari&rls=en&q=as3+object+pool&ie=UTF-8&oe=UTF- 8) –

답변

2

스테이지에서 개체를 제거하고 모든 참조를 확인해야합니다 설정됩니다. 여기에는 이벤트 리스너, 자식 표시 객체 제거 및 내부 코드 실행 중지가 포함됩니다. 그런 다음 객체는 garbage collection의 자격을 얻게됩니다. 그래서 예를 들어

:

if(myBullet has hit tower) { 
    removeChild(myBullet); 
    myBullet.removeEventLister(someEvent, someFunction); 
    myBullet.stopSpinning(); 
    myBullet = null; 
} 
+1

또한 글 머리 기호에 내부 표시 개체가있는 경우 글 머리 기호에서 제거해야합니다. 그렇지 않으면 글 머리 기호의 child 속성이 가비지 수집으로 수집되지 않도록 할 수 있습니다. – WORMSS

+0

좋은 지적, 고마워. – shanethehat