모든 구성 요소는 사용자가 구성 요소와 상호 작용할 때 이벤트를 브로드캐스팅합니다. 예를 들어, 사용자가 Button을 클릭하면 Button 구성 요소는
MouseEvent.CLICK
이벤트를 전달하고, 사용자가 List에서 항목을 선택하면 List 구성 요소는 Event.
CHANGE
이벤트를 전달합니다. UILoader 인스턴스의 내용 로드가 완료되어
Event.COMPLETE
이벤트가 생성되는 경우와 같이 구성 요소에 중요한 변화가 나타날 때도 이벤트가 발생할 수 있습니다. 이벤트를 처리하려면 이벤트가 발생할 때 실행되는 ActionScript 코드를 작성해야 합니다.
구성 요소의 이벤트에는 구성 요소가 상속받는 모든 클래스의 이벤트가 포함됩니다. 즉, UIComponent 클래스는 ActionScript 3.0 사용자 인터페이스 구성 요소의 기본 클래스이기 때문에 모든 ActionScript 3.0 사용자 인터페이스 구성 요소는 이 클래스의 이벤트를 상속합니다. 구성 요소가 브로드캐스트하는 이벤트 목록은
ActionScript 3.0 Reference
for Flash Professional
에서 해당 구성 요소 클래스 항목의 이벤트 단원을 참조하십시오.
ActionScript 3.0에서의 이벤트 처리에 대한 자세한 설명을 보려면
ActionScript 3.0 프로그래밍
을 참조하십시오.
이벤트 리스너
다음은 ActionScript 3.0 구성 요소의 이벤트 처리와 관련된 주요 사항입니다.
-
구성 요소 클래스의 인스턴스가 모든 이벤트를 브로드캐스팅합니다. 즉, 구성 요소 인스턴스가
브로드캐스터
입니다.
-
이벤트
리스너
를 등록하려면 구성 요소 인스턴스에 대해
addEventListener()
메서드를 호출해야 합니다. 예를 들어, 다음 코드 행은 Button 인스턴스
aButton
에
MouseEvent.CLICK
이벤트에 대한 리스너를 추가합니다.
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
addEventListener()
메서드의 두 번째 매개 변수는 이벤트가 발생할 때 호출할 함수 이름인
clickHandler
를 등록합니다. 이 함수는
콜백
함수
라고도 합니다.
-
구성 요소 인스턴스 하나에 리스너를 여러 개 등록할 수 있습니다.
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
aButton.addEventListener(MouseEvent.CLICK, clickHandler2);
-
하나의 리스너를 여러 구성 요소 인스턴스에 등록할 수 있습니다.
aButton.addEventListener(MouseEvent.CLICK, clickHandler1);
bButton.addEventListener(MouseEvent.CLICK, clickHandler1);
-
이벤트 핸들러 함수는 이벤트 유형 및 해당 이벤트를 브로드캐스팅하는 인스턴스에 대한 정보가 들어 있는 이벤트 객체로 전달됩니다. 자세한 내용은
이벤트 객체
를 참조하십시오.
-
리스너는 응용 프로그램이 종료되거나 사용자가
removeEventListener()
메서드를 사용하여 리스너를 명시적으로 제거하기 전까지 활성 상태로 유지됩니다. 예를 들어, 다음 코드 행은
aButton
의
MouseEvent.CLICK
이벤트에 대한 리스너를 제거합니다.
aButton.removeEventListener(MouseEvent.CLICK, clickHandler);
이벤트 객체
이벤트 객체는 Event 객체 클래스에서 상속되며 이벤트 객체에는 발생한 이벤트에 대한 중요한 정보를 제공하는
target
속성과
type
속성 등의 이벤트 정보가 포함된 속성이 있습니다.
속성
|
설명
|
type
|
이벤트 유형을 나타내는 문자열입니다.
|
target
|
이벤트를 브로드캐스팅하는 구성 요소 인스턴스에 대한 참조입니다.
|
이벤트에 추가 속성이 있는 경우
ActionScript 3.0 Reference
for Flash Professional
에서 이벤트의 클래스 설명에 해당 속성이 나열됩니다.
이벤트가 발생하면 이벤트 객체가 자동으로 생성되어 이벤트 핸들러 함수에 전달됩니다.
함수 내에 이벤트 객체를 사용하여 브로드캐스팅된 이벤트의 이름이나 이벤트를 브로드캐스팅하는 구성 요소의 인스턴스 이름에 액세스할 수 있습니다. 인스턴스 이름에서는 다른 구성 요소 속성에 액세스할 수 있습니다. 예를 들어, 다음 코드는
evtObj
이벤트 객체의
target
속성을 사용하여
aButton
인스턴스의
label
속성에 액세스하고 해당 값을 출력 패널에 표시합니다.
import fl.controls.Button;
import flash.events.MouseEvent;
var aButton:Button = new Button();
aButton.label = "Submit";
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(evtObj:MouseEvent){
trace("The " + evtObj.target.label + " button was clicked");
}
|
|
|