코드/ActionScript & MXML

Automatically declare stage instances

Yeah-Panda 2011. 5. 6. 14:58




Properties 창에서  ActionScript Settings 의 Edit 버튼을 누르면 오른쪽과 같은 팝업창이 뜹니다.

거기서  Stage : Automatically declare stage instances 옵션을 해제 합니다.

디폴트 값은 체크되있습니다.

이 옵션은 스테이지에서 생성한 인스턴스드들을 자동으로 멤버변수로 선언해주는 옵션입니다.

이 옵션은 반드시 끄고 사용해야합니다.

수많은 컴파일 에러와 런타임 에러를 동반하는 무서운 옵션이랍니다...

뭔 소리냐니깐

스테이지에서 임의의 무비클립을 생성하고 properties 창의 name 부분에 "mc" 라고 이름을 적어 둡니다.

일반적으로 저렇게 한뒤 메인 클래스 파일에서 this.getChildByName("mc") 나 this.mc  이런 식으로 접근합니다.

근데 properties 창에 적는 인스턴스 네임은 그 객체의 name 속성입니다.

가령 
var obj:Sprite = new Sprite();
obj.name = "kim";

이런 식으로요. 저기의 "kim" 가  properties 창의 인스턴스 네임에 해당하는 부분입니다.

즉 네임 이란건 해당 sprite 객체의 name 이라는 속성이며

저 예시에서  obj 라는 변수는, 메모리에 저장된  Sprite 객체를 참조하는 변수 이름입니다.


Automatically declare stage instances 옵션은

코드가 아닌 fla 에서 생성된 인스턴스들을 자동적으로 변수로 선언해주는 옵션인겁니다.

즉 properties 의 인스턴스 네임 창에 kim 이라는 속성값을 넣으면

자동적으로 해당 클래스에 "kim" 이라는 멤버변수를 선언하는 겁니다.

그런데 이 옵션을 꺼야 하는 이유가 이미 선언되어있는 멤버변수를 뒤엎어서 컴파일 하기때문에

갖가지 컴파일 에러를 발생시키며 멤버변수를 상위 클래스로 상속할 수없게하는 단점이 있습니다.

꼭 꺼야 하는 옵션중의 하나입니다.


아마 저 옵션을 끄고 평소 처럼 fla 에서 무비클립 인스턴스를 만들고

인스턴스 네임을 적고 바로 컴파일해보면 에러가 뜨는 것을 보실수 있습니다.

저 옵션을 끈 이후에는 클래스에 직접 멤버변수 선언을 해주어야 합니다.

위 예처럼 인스턴스 네임이 "kim" 으로 적어 뒀다면

해당 클래스에 public var kim:MovieClip;     이런 선언이 필요합니다.

언듯 귀찮을 듯하지만, 원인 모를 컴파일에러와 런타임 에러를 막기 위해서 필수적으로 꺼줘야 할 옵션인것 같습니다.





'코드 > ActionScript & MXML' 카테고리의 다른 글

applicationComplete  (0) 2014.01.12
플렉스 코딩 폰트 변경  (0) 2013.01.07
Object["String"]  (0) 2011.05.06
스케일폼 4.0에서 AS3.0 지원  (0) 2011.04.02
NetStream 클래스에서 NetStatusEvent, onMetaData  (0) 2011.02.16