Tag: 인스턴스
null 객체 에러 예방을 위한 액션스크립트 클래스의 초기화 순서 이해하기
by 세계의끝 on 4.12, 2011, under 고수들은 가르쳐주지 않는 AS3.0 입문
애플리케이션의 실행은 초기화(Initalize) 라는 과정을 가장 먼저 거치게 됩니다. 애플리케이션이 실행되기 전에 메모리에 띄워 놓을것은 띄워 놓고 이런저런 것들을 변수에 할당한 후에 실행을 준비하는 단계죠.
어떤 것들이 초기화에 해당하는지 이해하고 있고, 그 순서를 정확하게 이해하고 있다면 컴파일 단계에서 에러의 숫자를 획기적으로 줄일 수 있기 때문에 이 초기화 단계를 이해하고 있는 것은 매우 중요합니다. 특히 여러분이 null 객체 에러를 자주 만난다면 반드시 이 포스트를 정독할 필요가 있습니다.
“그거라면 이미 다 알고 있는 내용이잖아!!” 라고 불평하시는 현업 개발자 여러분들에게는 보너스로, static 생성자함수(!?)를 소개합니다. 이런분들은 D-2.클래스 생성자 부터 읽으셔도 되겠습니다.
Singleton Pattern 싱글턴 패턴을 액션스크립트로 컨버팅 – Head First Design Pattern
by 세계의끝 on 6.18, 2009, under Design Pattern
헤드퍼스트 디자인 패턴 제 5 장 싱글턴 패턴 입니다. 싱글턴 패턴은 스터디에서는 건너뛰었지만, 이 일련의 디자인 패턴을 다룬 포스트들은 모든 패턴을 한 번씩 다뤄 보는데도 나름의 의의가 있기도 하므로 짚고 넘어가 보겠습니다.
싱글턴 패턴 – 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다.
싱글턴 패턴은 객체가 두개가 되지 않도록 구조화 되어있으므로 애플리케이션에서 히스토리를 관리한다던가, 모달리스 다이알로그 박스를 띄운다던가, 사용자 설정이나 포커스 관리 같이 객체가 하나 이상이 되면 안되는 부분에 사용하게 됩니다.
본문 예제에서는 밀크 초콜렛을 끓여 만드는 초콜렛 보일러를 예로 들고 있습니다. 초콜렛 보일러는 초콜렛 공장의 유일한 보일러 이므로 객체 생성도 한번밖에 할 수 없도록 해야합니다.
보일러는 재료 넣기 –> 끓이기 –> 추출의 3 단계를 거쳐 초콜렛을 관리하게 되는데 이전 단계가 완수되지 않으면 다음 단계로 넘어갈 수 없도록 조건문이 걸려 있습니다.
AS2.0과 AS3.0의 무비클립 부모자식 관계 차이점 이해
by 세계의끝 on 4.30, 2009, under AS3.0 API
AS2.0의 무비클립의 포함 관계에서는 대상을 참조하기 위해서 . (dot:점) 을 찍고 계속 참조할 수 있습니다.
실제로 무비클립의 참조에서는 부모 무비클립 안에 자식 무비클립이 들어가 있죠.
그런데 AS3.0의 addChild 는 메소드명이 그래서 그런지 AS2.0처럼 실제 부모안으로 자식을 집어넣는다고 이해하는 경우가 종종 있는것 같습니다.
가령 아래와 같은 코드가 있을때
0 1 2 3 4 | //mc는 스테이지에 놓여져 있는 무비클립 var k:MovieClip = new MovieClip(); mc.addChild( k ); trace( mc.k ) // 출력 : undefined |
이렇게 참조하려고 할 수 있겠습니다. 그러나 출력 결과에서 보시듯이 undefined 가 나오게 됩니다. 이것은 addChild를 AS2.0의 무비클립의 포함관계, 또는 계층구조로 이해하려고 하는 습관 때문입니다.
아래의 코드를 보시면,
0 1 2 3 4 5 6 | var k:MovieClip = new MovieClip(); k.name = "name_k"; // 이렇게 인식하기 좋도록 name 속성을 주고. mc.addChild( k ); trace( mc.getChildByName( "name_k" ) ); //출력 : [object MovieClip] trace( mc.getChildAt( 1 ).name ); // 출력 : name_k (mc 안에 도형이 하나만 있어서 도형이 index가 0이고 k의 index가 1이 되므로 k를 가리키게 됨.) trace( k ); // 출력 : [object MovieClip] |
이 trace 구문들을 보고 뭔가 무릎을 탁 치고 느끼는게 있다면 AS3.0 앞에 놓인 벽 하나를 넘은 셈이 됩니다.
AS2.0에서의 무비클립의 부모자식 관계와 마찬가지로, AS3.0에서도 드로잉 툴에서 무비클립을 만들어 자식을 포함시켜 나가면 AS2.0과 동일하게 점찍고 참조도 가능합니다. AS3.0에서도 당연히 물리적으로(시각적) 무비클립을 포함하는 관계를 만들수도 있죠.
그러나 addChild 로 엮어진 관계는 그런 포함관계가 아니라 수평적으로 엮인 관계 입니다. 실제 인간세상에 비유하자면 양부모와 양자녀 관계라고 할 수 있을것 같습니다.
즉 물리적으로 부모클립에 들어가는 관계가 아니라 논리적으로 엮인 관계인 것이죠.
위의 코드에서 보듯이 점찍고 호적문의 ( getChildByName ) 를 해서 참조도 가능하고, 직접 k 를 잡고 핸들링도 가능합니다. AS2.0 에 비해 참조 방법이 늘어나서 좀더 수월하다고 느낄 수도 있을 것입니다.
이 글은 플생사모의 질문 글에 대한 답변으로 작성되었습니다. ( http://cafe.naver.com/flashdev/37371 )
Blog under the Creative Commons Attribution-NoDerivs 3.0 License