2010-04-26 6 views
0

무대에 많은 요소가있는 게임을 만들고 있으므로 루프를 최적화하려고합니다. 나는 Vector 배열을 루프보다 빠른 것을 알고,하지만 난 사용하는 경우도 있어요 :Flash 10의 표시 목록은 무엇입니까? 정렬? 연결된 목록?

while (i < numChildren) 
    getChildAt(i) 

이 ... 스프라이트를 업데이트 할 수 있습니다.

제 질문은 getChildAt를 사용할 때 배열이나 벡터 또는 링크 된 목록 또는 기타에 액세스하는 것입니까? 대신 내 개체에 대한 참조를 Vector에 저장하고 그 대신 루프를 사용해야합니까?

답변

4

무대에 많은 요소가 있다면 대부분 렌더링에 소요됩니다.
또한 함수 호출에 대한 비용이 Vector 또는 Array의 액세스보다 훨씬 크기 때문에 DisplayObjectContainer의 하위 목록이 어떻게 구현되는지는 중요하지 않습니다. 실제로 자식 목록은 C/C++ 모음을 사용하여 구현되지만 ActionScript 내장 항목 모음에서 오는 모든 오버 헤드가있는 것 같지 않습니다.

그래, 모든 아이들을 Vector에 저장하면 삭제 비용이 많이 들지만 더 빨리 조회 할 수 있습니다. insterting은 (변경 작업을 할 때 벡터를 업데이트하고 이벤트를 제거하기 위해 모든 자식 조작 방법을 재정의하는 경우) 더 어렵거나 더 어렵게됩니다.

당신은 뿌리 스프라이트가 보이지 않는 상태에서 게임을 실행해야 얼마나 소비하는지 볼 수 있습니다.
내 경험에 비추어 볼 때,이 최적화는 어떤 빠른 속도 향상도 가져 오지 못할 것입니다. 플래시 게임을위한 기존의 최적화 기술에 대해 배우십시오.

greetz
back2dos

1

따라 문서는 getChildAt()는 (상대적으로) 더 느린 링크 된리스트 탐색되는 getChildByName()에 비하여 빠르고 해시 테이블 룩업 (된다.