본문 바로가기

ETC Programmings

Event : 전체적인 프로그램의 흐름의 이해가 뒷받침 되어야 한다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
글의 부제로 '전체적인 프로그램의 흐름의 이해가 뒷받침 되어야 한다.' 라고 한 이유는 그야말로 말 그대로이다. 매쉬업 프로젝트를 진행하면서 부랴부랴 배운 이벤트와 관련된 내용들은 전체적인 Flex의 흐름을 읽지 못하고 마구잡으로 쓰게 되었고 그 결과는 여러가지 이벤트들을 효과적으로 다루지 못하고 매우 산발적으로 조건문을 통한 처리를 해주었고, 이때문에 생기는 런타임 에러들에 허덕이게 되었다. 아직 이벤트와 관련하여 배워야 할것들이 더 많지만 지금처럼 좀더 천천히 체계적으로 배웠으면 하는 생각이 든다.



	
			import mx.controls.Alert;
			private function doClick(evt:Event):void{
				Alert.show(evt.type,"Event Type");
			}
	
	



먼저 위의 소스에서 사용한 이벤트는 두가지 이다. creationComplete 라는 이벤트와 click 이라는 이벤트 이렇게 두가지가 있다.

creationComplete : 화면상에 보이는 컴포넌트들 (Control 이나 Layout) 같은 것들을 화면상으로 만드는 작업을 완료했을때 발생하는 이벤트
click : 해당 컴포넌트를 클릭했을때 발생하는 이벤트이다. 주로 Button 이나 LinkButton 같은데서 많이 쓰일것이다.

이 두가지 이벤트는 상당히 많이 썼던 것이다. 이외에도 많은 이벤트 들이 있지만 차차 배워가면서 익히는것이 좋겠다. 모든 이벤트가 발생할때는 event 라는 변수가 있다. 실제로 소스를 보면 event 라는 객체에 대한 선언은 전혀 없지만 이벤트를 발생시키는 attribute 를 선언하는 순간 자동적으로 생성되는듯하다. 이 이벤트 객체는 여러가지 속성들을 가지고 있다. 일단은 Event 라는 클래스를 중심으로 여러가지 다른 형태의 이벤트 들이 존재한다. 실제로 이벤트 핸들러를 통해 어떤 형태의 이벤트 객체가 다뤄질지에 대해서는 개발자가 인지하고 해당 이벤트에 맞추어서 개발해야 겠다.

먼저 몇가지 속성들 중에서 쉽게 사용할 수 있는 속성은 target, type 정도가 되겠다. target 은 어떤 컴포넌트로 부터 발생했는지에 대한 정보를 담고 있고, type은 발생한 이벤트의 형태 가 어떤것인지에 대한 정보이다. 여기서는 target 정보는 mx.controls.Button (@47cb0a1) 이라고 나오고 type 정보는 click 이라는 문자열이 들어있다.

<Debug 모드의 break point 를 사용하여 해당 시점의 변수들의 값을 확인한다>

즉 이벤트를 다루는 흐름을 살펴보면 다음과 같다.

1. 해당 컨트롤러에 필요한 이벤트를 계획하고 이벤트의 형태를 정의한다.
2. 이벤트가 발생하는 시점을 고려하여 어떤 동작에서 이벤트가 발생해야 하는지 계획한다.
3. 1번에서 계획한 이벤트를 처리할 함수를 만든다.
4. 이벤트의 속성값에 따라 이벤트에 따른 어떤 Action을 취할지에 대한 정의를 한다.
5. 올바르게 작동하는지 검증을 한다.

위의 부분에서 1, 2번이 결여된 경우가 많기 때문에 사용자들이 해당 컨트롤에서 취할수 있는 액션에 대해서 미리 어느정도 정의를 좀 해놓은 후에 어플리케이션 개발을 진행해 나가는게 좋겠다.