[AS 3.0] getDefinitionByName() 함수

ActionScript 3.0 — Tags: , , — Siaa @ 2:07 pm

getDefinitionByName() 함수는 매개 변수로 지정된 클래스의 클래스 객체에 대한 참조를 반환합니다.
어떤건가 하면… 예를들어,
FLA파일을 작성하고 라이브러리에 무비클립을 등록하고서, Linkage를 통해 Class를 지정해 주었을 때 이놈을 스테이지로 끄집어 낼 수가 있죠. 간단히 아래처럼 할 수 있겠지요~

var myMC:MC1 = new MC1();
addChild(myMC);

그런데, 아래 이미지처럼 Linkage를 통해 Class를 지정해 준 놈이 많고, 게다가 Class이름이 일정한 규칙(MC1, MC2, MC3, …)을 갖고 있을 때,
getdefinitionbyname
요거 for문을 사용하면 먼가 될 거 같은 생각이 듭니다.
그런데, for문과 배열을 이용해서 변수를 규칙적으로 만들 수는 있지만 new연산자의 클래스를 각각 다르게 지정하는 건 안되죠..
요럴 때 getDefinitionByName()함수를 사용하면 편합니다.
레퍼런스에도 나와있지만

  1.  Class유형의 변수 ClassReference를 getDefinitionByName()를 이용해서 원하는 클래스에 할당합니다.
  2.  instance라는 ClassReference의 인스턴스를 인스턴스화 하고…
  3.  원하는 속성값을 지정하고서 끄집어내면 됩니다.
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);
}

  • Share/Bookmark

0 Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2010 blog.flasia.com | powered by WordPress with Barecity