2010-01-04 4 views
0

메이트와 같은 프레임 워크를 사용하지 않고 Flash Builder 4 베타 2 (야간 SDK)로 AIR 응용 프로그램을 개발하고 있습니다. 내 응용 프로그램에서 몇 가지보기 및 구성 요소가 있습니다.프레임 워크를 사용하지 않고 flex 이벤트를 처리합니까?

root 
|- mainview 
|-- toolbar 
|-- catalogue view 
|--- tree 
|--- datagrid 
|-- statusbar 

이 100 % 내 프로젝트의 구조가 아니라 예로서 충분할 수있다 : 개요는 다음과 같이 보일 수 있습니다. 앱이 초기화 될 때, 트리는 데이터를로드합니다.이 경우에는 카테고리 목록입니다. 사용자가 트리의 항목을 클릭하면 DataGrid의 데이터가로드됩니다.

트리 항목을 클릭 할 때마다 이벤트를 발송합니다. 이 이벤트는 클릭 한 항목의 VO를 버블 링하고 전달합니다. 이제 DataGrid에서이 이벤트를 catch하고 싶습니다. Currenty 나는 (클래스와 함수를 사용하여)이 같은이 이벤트에 대한 이벤트 리스너를 등록 :

FlexGlobals.topLevelApplication.addEventListener(eventName, this.eventHandler); 

이 코드는 데이터 그리드의 생성이 완료 리스너에서 실행됩니다. 여하튼, 이것은 mee에 약간 장애가있는 것처럼 보인다. 또는 최상위 레벨 응용 프로그램에서 구성 요소의 이벤트 리스너를 등록하는 것이 일반적인 기술입니까?

답변

1

그래,이 솔루션은 완벽하게 좋습니다. 프레임 워크 중 일부는 Mate 및 Swiz와 같은 가장 많이 표시되는 객체에 이벤트 리스너를 추가하므로 정확하게 수행 할 수 있습니다. 그저 Source for Mate's GlobalDispatcher을 확인하십시오. Swiz는 그와 같은 것을 사용하고, Cairngorm 스타일의 CentralDispatcher (비 표시 객체 글로벌 이벤트 용)를 사용합니다 : Source for Swiz's CentralDispatcher.

전역으로 표시 객체 이벤트를 수신하려는 경우 최상위 애플리케이션에 이벤트 수신기를 등록하는 것이 가장 좋습니다. 다른 것은 따라하기가 너무 복잡 할 것입니다. 프레임 워크는 메타 데이터 (Swiz, Cairngorm 3, Parsley) 및 EventMaps (Mate)를 통해 사용자로부터 멀리 떨어진 모든 것을 추상화하는 경향이 있습니다.

관련 문제