Tag: 동적
액션스크립트의 객체 재사용을 위한 오브젝트 풀(Object Pool)
by 세계의끝 on 12.02, 2010, under OOP, 고수들은 가르쳐주지 않는 AS3.0 입문
이 포스트는 “플래시 플레이어의 가비지 컬렉션(gabage collection)에 대한 이해” 로부터 이어지는 내용 입니다.
A. Object Pool의 의미
객체 재사용 이라고 해서 뭐 엄청난 방법이 필요한 것은 아닙니다. 가장 쉽게 사용할 수 있는 방법으로는 Array 나 Vector 또는 Object 와 같은 컬렉션(Collection) 형태의 자료구조에 객체를 만들어 넣어두고 필요한 만큼 사용한 후, 필요없어진 객체를 다시 반납하는 방식으로 로직을 구성하면 됩니다.

Object in Pool !!!
이러한 구조를 객체 풀 또는 오브젝트 풀(Object Pool) 이라고 부르고, 오브젝트 풀로부터 객체를 획득하는 행위를 풀링(pooling) 한다고 표현합니다.Pool은 우리도 흔히 사용하는 단어 입니다. [구글 사전 링크] 수영장의 그것을 일컫는 단어이기도 하고요, 제안서에서도 자주 “인력 풀” 과 같은 형태로 자주 등장합니다. 스타크래프트의 저그 종족에서 저글링을 생산하기 위한 기본 건물을 스포닝 풀(Spawning Pool : 산란못)이라고 부르죠. 어떠한 대상이 모여있는 특정 장소라는 원래의 뜻을 가지고 있습니다.
AS3.0 getDefinitionByName() 메서드를 이용한 라이브러리 자원 이용 – AS2.0 attachMovie 대응
by 세계의끝 on 6.25, 2009, under AS3.0 API
AS2.0 시절, 프레임에서 신나게 코딩할때 라이브러리 패널에 링키지 네임을 준 무비클립을 attachMovie() 메서드를 이용해 스테이지에 불러와서 자유롭게 사용할 수 있었습니다.
AS3.0 에 들어와서는 라이브러리 패널의 링키지는 사용할 수 없지만 클래스 네임을 부여하여 별도의 클래스 파일을 만들지 않고도[01] new ClassName() 을 하여 마찬가지의 기능을 수행할 수 있습니다.
그런데 new ClassName() 에서 ClassName 부분은 정확한 클래스 이름이 와야 하고, this["str"] 나 _root["str"] 같이 AS2.0에서 흔히 사용했던 레퍼런스 참조 방법을 new 연산자 다음에는 사용할 수 없으므로 AS3.0에서 new ClassName() 으로는 아래와 같은 AS2.0의 for 문을 이용한 동적인 attachMovie() 는 사용할수가 없습니다.[02]
0 1 2 3 4 5 6 | //AS2.0의 동적 attachMovie 예시 var arr:Array = new Array( "메뉴1", "메뉴2", "메뉴3" ) var len:Number = arr.length; for ( i = 0; i < len; i++ ) { attachMovie( "mc", "mc"+i, i ) } |
그럼 어떻게 해야할까요?
Blog under the Creative Commons Attribution-NoDerivs 3.0 License