본문 바로가기

Flex

Flex Event 기본 설명

나는 디자이너 출신이기 때문에 프로그래밍에 대한 심오한 지식이 없다.
대학에서 윈도우 프로그래밍이나 자바, C 관련 언어에 대한 강의를 들었지만 디자인에 더 관심이 많았기 때문에 별로 주의깊에 듣지 않았었고... 그걸 지금 와서 엄청 후회하는 중이다.

Flash2 때 처음 Flash를 접하게 되었고 3 버전부터 사용을 하다가.. 4,5 를 넘어오면서 actionscript가 timeline 보다 점점 벽으로 다가왔지만.. 그때까지도 할만 했다.
하지만 2.0이 나오면서 부터 기존에 onClick 형식으로 타임라인에 스크립트를 입력하던 방식에 한계가 오고 내입장에서는 듣도보도 못한 addEventListener 라는놈이 나오기 시작하면서.. "아.. 개발자의 영역으로 가버리는구나" 생각하고 디자인에만 매진하게 되었다.

역시 이것도 지금은 후회하는 중이다.. 지금 개발자로 전향할줄 알았다면 그때 좀 힘들어도 포기하지 않았을텐데 -ㅅ-
지금도 이벤트가 정확하게 동작하기 위해서 trace로 확인하는 테스트 과정을 거쳐야 원하는 대로 결과가 나오는등.. 언제나 조금 복잡한것은 삽질의 연속이다.

역시 이 글도 [2010/02/02 - [as3] - Flex, Flash 가비지 컬랙션 방법과 메모리 관리] 요넘 처럼 정리 차원에서 쓰게 되었고. 글을 쓰면서 사용하게될 예제들도 사용하기위해서 테스트 하던 소스들이 될것이다.


AS3 는 이벤트를 기반으로 동작하도록 되어있어서 모든 행위들이 이벤트를 발생하게 된다.
이벤트를 이해 하고 있어야 복잡한 동작들을 원하는 시점에서 원하는 방식으로 정확하게 동작할 수 있도록 구현이 가능하다.

이벤트를 사용하면서 얻는 이점

이벤트를 사용하면 특정 개체에 종속적이지 않은 프로그램을 만들 수 있다.
이전의 프로그래밍은 특정 행위가 발생했을때 콜백함수를 호출하는 방식이었다.
이런 방식은 해당 컴포넌트가 상위의 컴포넌트에 종속되는 결과를 가져온다. 상위 컴포넌트에 정의되어있는 함수를 호출하게 되기 때문에 다른 컴포넌트에서 사용할수가 없게 되고 사용하기 위해서는 같은 이름의 콜백함수를 등록해야 한다.
이런 방식은 각 컴포넌트들간의 결합도를 강하게 만든다.

이벤트를 사용하게 되면.. 하위컴포넌트가 발생시킨 이벤트를 상위 컴포넌트가 받을수 있고 하위 컴포넌트 입장에서는 이벤트만 발생하면 땡이다.. 상위에서 받아서 쓰던지 말던지 신경쓰지 않아도 되는것이다.
누가 받는지.. 어디서 받아서 무슨일을 하는지 전혀 신경쓰지 않아도 되기 때문에 여러곳에서 해당이벤트를 받아서 사용할수도 있고 다른 컴포넌트에 추가 되더라도 어차피 이벤트만 발생시키는 것이기 때문에 사용하는데 전혀 무리가 없다.

공용으로 사용할 수 있는 독립적인 컴포넌트를 만들 수 있게 되는것이다.

이벤트는 비동기적이다.
따라서 어떤 작업을 실행시켰을때 화면이 멈추지 않고 다른 작업을 진행할 수 있다.
이벤트가 완료되고 실행되는 핸들러에서 완료되는 시점에 해야 할일을 정의 해놓으면 되는 것이다.
이 방법은 반대로 불편하게 느껴지기도 하는데.. 순차적으로 처리 해야 하는 일이나.. 모든것보다 우선해서 뭔가를 처리 해야 할때 기존의 방식대로 처리 하다가 에러를 만나게 되는 경우가 많다.
하지만 제대로 사용한다면 자유로운 세계를 만나게 될 것이다.

AS3 에서 이벤트는 EventDispatcher 라는놈이 관리 하게 되고 이벤트 디스패쳐를 상속해서 만들어진 컴포넌트 들은 이벤트를 발생시키거나 받을 수 있다.
플렉스의 기본이 되는 UIComponent 도 이벤트 디스패처를 상속하고 있기 때문에 모든 컴포넌트들이 이벤트를 주고받을 수 있는것이다.

개요는 이정도로 마무리 지어도 될것 같고..

이후에 포스트들에서는



등에 대해서 알아 볼것이다.