[AS3] 커스텀이벤트
Flash - as2, as3 2010. 2. 17. 17:111 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | * 커스텀 이벤트를 생성하는 이유는 이벤트 전달 시에 데이터도 함께 전달하고자 하는데 목적이 있다. package { import flash.events.Event; // 커스텀 이벤트 생성 // 이벤트 클래스 혹은 그 상위 이벤트 클래스를 상속받는다. public class CustomEvent extends Event { static public const CALL:String = "call"; private var _data:Object; // 생성자의 파라메터 값을 통해 버블링, cancelable 등을 설정할 수 있다. public function CustomEvent( type:String, data:Object, bubble:Boolean = false, cancelable:Boolean = false ) { super( type, bubble, cancelable ); this._data = data; } // clone 메서드를 override 하는 이유는 이벤트 재전달 시 // 커스텀 이벤트 인자들의 값을 그대로 재전달하기 위해서.. override public function clone():Event { return new CustomEvent( type, _data, bubbles, cancelable ); } public function get data():Object { return _data; } } } package { import flash.display.Sprite; import flash.events.*; [SWF(backgroundColor="#ff0000", width="300", height="50")] public class CustomEventTest extends Sprite { // CustomEvent 를 전달할 객체를 생성한다. private var dispatcher:EventDispatcher = new EventDispatcher(); private var data:Object = { data1:"data1", data2:"data2" }; public function CustomEventTest() { stage.addEventListener( MouseEvent.CLICK, clickHandler ); dispatcher.addEventListener( CustomEvent.CALL, dataHandler ); } // stage 클릭 시 이벤트를 dispatch 하고, private function clickHandler( e:MouseEvent ):void { dispatcher.dispatchEvent( new CustomEvent( CustomEvent.CALL, data ) ); } // 이벤트와 함께 전달된 데이터들을 출력. private function dataHandler( e:CustomEvent ):void { trace( "1번째데이터: ",e.data.data1, "2번째데이터: ",e.data.data2 ); } } } | cs |