지돌스타 밤하늘의 실제별, 나도 가질 수 있다?!

[Flex 2.0.1]커스텀 컴포넌트에 사용하는 Metadata 태그 소개

2007/05/29 10:45
전체 차례보기 : Flex 2 컴포넌트 제작과 확장

Flex 컴파일러에게 정보를 제공하기 위해 MXML과 ActionScript 파일안에 metadata 태그를 삽입해야한다.
Metadata 태그는 실행코드안에서 직접 컴파일되지 않지만 코드안에 한 부분이 어떻게 컴파일 되어져야 하는지 제어하는 정보를 컴파일러에게 제공한다.  한마디로 컴파일러가 Flex코드를 컴파일하는데 미리 고려해서 컴파일해야하는 부분을 선언해주는 것과 같다. 꼭 컴파일러가 아니더라도 프로그래머에게도 코드가 직관적이도록 도움을 준다.

여기서는 MXML과 ActionScript에서 컴포넌트를 생성할때 사용하는 Metadata 태크에 대해 설명한다.
Flex2 개발자 가이드는 어플리케이션을 만들때 사용하는 [Embed] Metadata 태그와 같은 추가적인 Metadata 태그에 대한 정보 또한 포함한다. [Embed]에 대한 더 많은 정보는 Flex 2 개발자 가이드의 Embedding Assets 를 참고한다.

Metadata 태그에 대해


Metadata 태그는 Flex 컴파일러에게 어떻게 Flex Application안에 사용되는 여러분이 만든 컴포넌트가 사용되는지 정보를 알려준다. 예를들어 새로운 이벤트를 정의하는 컴포넌트를 만든다고 하자. 컴포넌트안에 삽입한 [Event] Metadata 태그는 Flex 컴파일러가 Event가 있다는 것을 미리 알게 되어 그에 합당한 컴파일을 수행한다. 다음 ActionScript  Class 예제를 보자.

ActionScript Class에서 Event Metadata 태그 사용 예 (Language : java)
[Event(name="enableChanged", type=flash.events.Event)]
class ModalText extends TextArea {
    ...
}

이 예제에서 [Event] metadata 태그에서 이벤트 이름과 이 이벤트에 의해 처리할 이벤트 오브젝트 타입의 정의를 묘사한다. [Event] metadata 태그로 Flex 컴파일러에게 이벤트가 있다는 것을 알려준 후에 다음과 같이 MXML안에 참조할 수 있다.

MXML에서, 위에서 제작한 컴포넌트의 이벤트 사용하기 (Language : java)
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="*">

    <mx:Script>
        <![CDATA[
            function handleEnableChangeEvent(eventObj:Event):void {
                ...
            }
   
        ]]>
    </mx:Script>

    <MyComp:ModalText enableChanged="handleEnableChangeEvent(event);"/>
   
</mx:Application>

만약 [Event] Metadata 생략하면 Flex는 MXML 파일을 컴파일할때 문법에러(syntax error)를 발생시킨다. 이때 발생하는 에러 메세지는 "enableChanged 속성을 인식할 수 없습니다" 이다.

Metadata 태그를 사용하는 방법에 대해서는 Using metadata tags를 참고한다.

Metadata tags의 종류

다음 테이블은 ActionScript Class 파일에서 사용하는 metadata 태그에 대해 설명한다.

Metadata 태그

설명

[ArrayElementType]

Array의 각 요소에서 사용할 데이타 type을 선정한다. 가령 Number만 쓰겠다면 [ArrayElementType] Array의 요소가 Number만 사용하도록 설정할 수 있다.  더 많은 정보는 ArrayElementType metadata tag 를 참고한다.

[Bindable]

[Bindable]로 정의된 변수는 데이터 바인딩을 하기 위한 소스로서 사용할 수 있다. 더 자세한 정보는 Bindable metadata tag를 참고한다.

[DefaultProperty]

MXML파일에서 컴포넌트를 사용할때 컴포넌트의 Default속성의 이름을 정의한다. 자세한 정보는 DefaultProperty metadata tag를 참고한다.

[Effect]

Effect를 위한 MXML 속성의 정의한다. 자세한 내용은 Effect metadata tag 를 참고한다.

[Embed]

JPEG, GIF, PNG, SVG, SWF 파일을 컴파일할 시점에 가져와 같이 컴파일 한다. 또한 SWC 이미지 정보를 가져온다.
Flex 2 개발자 가이드 에서 Embedding Assets에 설명하는 것과 같이 기능상 MXML @Embed 문법과 동일하다.

[Event]

이벤트와 이벤트 형태의 데이타를 위한 MXML 속성을 정의한다. 자세한 내용은 Event metadata tag를 참고한다.

[IconFile]

Adobe® Flex™ Builder™ 의 Insert bar에 컴포넌트를 대표하는 아이콘을 위한 파일이름을 확인한다. 자세한 내용은 IconFile metadata tag 를 참고

[Inspectable]

이 Metadata 태그로 정의된 것은 속성 힌트와 Flex Builder의 Tag 지시자에서 컴포넌트 사용자들에게 노출하도록 한다. 자세한 내용은 Inspectable metadata tag를 참고한다.

[InstanceType]

IDeferredInstance타입의 속성이 허용된 데이터 타입을 설명한다. 자세한 내용은 InstanceType metadata tag를 참고

[NonCommittingChangeEvent]

interim trigger와 같은 이벤트를 가리킨다. 더 자세한 사항은 NonCommittingChangeEvent metadata tag를 참고

[Style]

컴포넌트에서 Style속성을 위한 MXML 속성을 정의. 자세한 내용은 Style metadata tag 참고


아래에 링크는 위에서 설명한 Metadata 태그에 대해 자세히 설명하고 있다.(영문)

ArrayElementType metadata tag
Bindable metadata tag
DefaultProperty metadata tag
Effect metadata tag
Event metadata tag
IconFile metadata tag
Inspectable metadata tag
InstanceType metadata tag
NonCommittingChangeEvent metadata tag
Style metadata tag


원본사이트 : http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part3_CreateComps_135_1.html


Flex를 공부할 때 Metadata는 반드시 이해하고 넘어가야 한다. 특히 왜 Metadata 태그를 이용하는지 정확하게 알아야 할 것이다.

번역 : 지돌스타 (http://blog.jidolstar.com/95)

번역 실력이 안좋은 관계로 제가 이해하는 방향으로 번역했고, 부가적인 설명도 좀 적었습니다. 참고하시면 도움이 될 것 입니다. 위에서 제시한 각각 Metadata 태그에 대해서도 번역할 예정입니다. ^^

Adobe Flash Platform , , , , , ,

Trackback 주소: http://blog.jidolstar.com/trackback/95 관련글 쓰기
  1. Blog Icon
    뒹굴뒹굴

    정보 감사합니다. ^^

  2. 대단하십니다. 각각의 메타테크 번역을 기다릴께요~

  3. Blog Icon
    M.k

    좋은글 감사합니다~~ 담아갑니다~~^ㅡ^*

  4. Blog Icon
    모험가

    좋은글 감사합니다.