[AS 3.0] getDefinitionByName() 함수
getDefinitionByName() 함수는 매개 변수로 지정된 클래스의 클래스 객체에 대한 참조를 반환합니다.
어떤건가 하면… 예를들어,
FLA파일을 작성하고 라이브러리에 무비클립을 등록하고서, Linkage를 통해 Class를 지정해 주었을 때 이놈을 스테이지로 끄집어 낼 수가 있죠. 간단히 아래처럼 할 수 있겠지요~
var myMC:MC1 = new MC1(); addChild(myMC);
그런데, 아래 이미지처럼 Linkage를 통해 Class를 지정해 준 놈이 많고, 게다가 Class이름이 일정한 규칙(MC1, MC2, MC3, …)을 갖고 있을 때,

요거 for문을 사용하면 먼가 될 거 같은 생각이 듭니다.
그런데, for문과 배열을 이용해서 변수를 규칙적으로 만들 수는 있지만 new연산자의 클래스를 각각 다르게 지정하는 건 안되죠..
요럴 때 getDefinitionByName()함수를 사용하면 편합니다.
레퍼런스에도 나와있지만
- Class유형의 변수 ClassReference를 getDefinitionByName()를 이용해서 원하는 클래스에 할당합니다.
- instance라는 ClassReference의 인스턴스를 인스턴스화 하고…
- 원하는 속성값을 지정하고서 끄집어내면 됩니다.
for(var i:Number = 1; i <= 5; i++){
var ClassReference:Class = getDefinitionByName("MC" + i) as Class;
var instance:Object = new ClassReference();
instance.x = 100 * i;
instance.y = 50;
instance.buttonMode = true;
instance.name = "Circle" + i
instance.addEventListener(MouseEvent.CLICK, onClickFunc);
addChild(DisplayObject(instance));
}
function onClickFunc(e:MouseEvent):void{
trace(e["target"].name);
}
