2008. 8. 20. 12:01

[Flex3] ActionScript 컴포넌트 생성 / Creating ActionScript components

Reference : http://livedocs.adobe.com/flex/3/html/usingas_7.html#217182

ActionScript 를 사용하는 재사용가능한 컴포넌트를 생성할 수 있고, 이 컴포넌트를 Flex 어플리케이션에서 MSML 태그처럼 참조할 수 있다. ActionScript 에서 생성된 컴포넌트는 그래픽 요소를 가질 수 있고, 비즈니스 로직을 정의할 수 있다. 또는 현존하는 Flex 컴포넌트륵 확장할 수도 있다. Flex 에서 어떤 컴포넌트도 상속할 수 있다.

ActionScript 에서 컴포넌트를 정의하는 것은 몇 가지 장점이 있다. 컴포넌트는 어플리케이션을 개발과 유지보수를 따로 할 수 있는 개개의 모듈로 나누는 것을 가능하게 한다. 컴포넌트에 일반적으로 사용되는 로직을 구현함으로써 여러 개의 Flex 어플리케이션에서 공유할 수 있는 재사용 가능한 컴포넌트 수트를 만들 수 있다.

또, Felx 클래스 계층 구조를 확장함으로써 Flex 컴포넌트 세트를 기반으로 하는 컴포넌트를 생성할 수 있다. Flex 시각 컨트롤의 새로운 버전을 생성할 수 있고, 비시각 컴포넌트의 특정 버전을 생성할 수도 있다.

예를 들어 myControls 패키지에 Button 컨트롤에서 파생된 새로운 버튼을 정의할 수 있다:
 

package myControls {
    import mx.controls.Button;
    public class MyButton extends Button {
        public function MyButton() {
            ...
        }
        ...
    }
}

이 예제에서 MyButton.as 파일에 MyButton 컨트롤을 작성하고, Flex 어플리케이션 루트 아래에 있는 myControls 디렉토리에 저장할 수 있다. The fully qualified class name of your component reflects its location. In this example, the component's fully qualified class name is myControls.MyButton.

MyApp.mxml 과 같은 Flex 어플리케이션 파일에서 새로운 Button 컨트롤을 참조할 수 있다:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:cmp="myControls.*">
    <cmp:MyButton label="Jack"/>
</mx:Application>

이 예제에서 어플리케이션의 디렉토리 구조에서 컴포넌트의 위치를 정의하는 cmp 네임 스페이스를 정의한다. 그리고 네임스페이스 접두사를 사용하여 MXML 태그로 컴포넌트를 참조한다.

일반적으로 소스 경로에 있는 디렉토리에 ActionScript 컴포넌트를 위치시킨다. flex-config.xml file 파일의 <source-path> 태그에 명시한 어떤 디렉토리도 가능하다.

MXML을 사용해서 컴포넌트를 생성하는 것도 가능하다. Creating and Extending Adobe Flex 3 Components 에서 더 많은 정보를 볼 수 있다.

Types of custom components
사용자 정의 컴포넌트의 종류

ActionScript에서 아래의 타입의 컴포넌트를 생성할 수 있다:

User-interface components
사용자 인터페이스 컴포넌트

User-interface components 는 처리 로직과 시각 요소를 모두 갖고 있다. 이 컴포넌트는 대개 Flex 컴포넌트 계층 구조를 확장한다. UIComponent 클래스나 다른 Flex 컴포넌트를 확장할 수 있다. Your custom ActionScript 컴포넌트는 기반 클래스의 퍼블릭과 프로텍티드 속성에 따라 모든 퍼블릭 메쏘드를 상속받는다.



 

Nonvisual components
비시각 컴포넌트

Nonvisual components  는 어떤 시각 요소도 정의하지 않는다. 비시각 컴포넌트는 UIComponent 클래스를 확장하지 않은 ActionScript 클래스다. 런타임에 더 높은 효율을 제공할 수 있다.