달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Using event subclasses

리스너 함수에 이벤트 객체를 정의 할 때 이벤트 타입을 정할 수 있다. 또는 이벤트 객체의 하위클래스를 지정할 수 있다.
예를 들어, 다음은 MouseEvent타입의 이벤트 객체를 지정하였다.

public function performAction(e:mouseEvent):void{

}


대부분의 컨트롤들은 지정된 이벤트 타입에 대해 객체를 발생한다. 예를 들어, 마우스 클릭은 MouseEvent타입의 객체를 발생하는데 더 구체적인 이벤트 타입을 지정함으로써, 어떤 다른 이벤트 객체로  캐스팅할 필요 없이 특정한 프로퍼티에 접근할 수 있다. 또한 이벤트 객체의 몇 서브 클래스들은 유니크한 함수를 가지고 있다. 예를 들어, LogEvent 는  String타입의 log level을  반환하는 일반 이벤트 객체는 가지고 있지 않은  getLevelString() 함수를 가지고 있다.

런타임에 정의한 이벤트 객체는 컴파일타임 타입의 하위클래스가 될 수 있다. 이벤트 객체를 특정 타입으로 캐스팅하는 것 처럼 특정 이벤트를 정의하지 않아도 이벤트 리스너 안의 명시된 프로퍼티들에 접근 할 수 있다.
아래의 예에서, 함수는 이벤트타입으로 정의 되었다. 그런데 함수안에  MouseEvent 클래스로 명시한  localX와 localY 프로퍼티로 접근하기 위해 MouseEvent 타입의 이벤트 객체를 캐스팅해야만한다.

<?xml version="1.0"?>
<!-- events/AccessEventSpecificProperties.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="addListeners()">
    <mx:Script><![CDATA[
        import mx.controls.Alert;
       
        private function customLogEvent(e:Event):void {
            var a:MouseEvent = MouseEvent(e);
            Alert.show("Y: " + a.localY + "\n" + "X: " + a.localX);
        }

        private function addListeners():void {
            b1.addEventListener(MouseEvent.CLICK, customLogEvent);
        }
    ]]></mx:Script>

    <mx:Button id="b1" label="Click Me"/>

</mx:Application>


 처음 부터 특정타입으로 이벤트 객체를 정의할 수 도 있다.

private function customLogEvent(e:MouseEvent):void { ... }

 




[플렉스 help 영문 정리]
원본  :  http://livedocs.adobe.com/flex/3/html/events_10.html#217508



:
Posted by 알 수 없는 사용자