여기 시나리오가 있습니다 ... "열기"버튼이있는 응용 프로그램이 있습니다. 열기 버튼을 클릭하면 TitleWindow가 PopUpManager를 통해 레코드를 선택할 수있는 대화 상자를 표시합니다. 이 창에서 레코드를 선택하면 "확인"을 클릭하거나 창을 닫아야하는 대화 상자를 취소 할 수 있습니다.팝업, 앱 또는 팝업 자체를 삭제해야하는 사용자는 누구입니까?
주 응용 프로그램에 레코드 번호를 반환해야하는 것을 알고 가장 좋은 방법은 무엇입니까? 지금은 주 응용 프로그램이 사용자 지정 TitleWindow를 여는 있습니다. TitleWindow에는 사용자가 "Ok"를 클릭하고 레코드가 선택 될 때 발생하는 이벤트가 있습니다. 이것이 메인 애플리케이션이 레코드 ID를 수신하는 방법입니다. 내가 궁금하면 나는 이런 식으로 뭔가 할 수 있다면 수 있습니다 :
private function RecordSelected():void
{
this.selectedRecord = someControl.selectedIndex;
this.dispatchEvent(new Event("RecordSelected"));
PopUpManager.removePopup(this);
}
이 TitleWindow의 인스턴스가 이벤트가 주 응용 프로그램에 의해 처리 된 후까지 활성 유지 것인가를, 또는 완전히 주 응용 프로그램 전에 제거 할 수 이벤트를 처리하므로 (null 참조 예외로 끝남)?
또는,과 같이 이벤트 핸들러에서 창을 닫습니다 낫다 : 이벤트에서 선택을 보내는이 할 수있는 최선의 방법 인 경우 나 또한 궁금하네요
private function titleWindow_RecordSelected(event:Event)
{
var openDialog:CustomTitleWindow = CustomTitleWindow(e.currentTarget);
this._selectedRecord = openDialog.selectedRecord;
PopUpManager.removePopup(openDialog);
}
. 모든 통찰력은 인정 될 것이다. 미리 감사드립니다.
더 나은 방법으로 처리 할 수 있습니다. 호기심을 위해 닫는 것조차도 계속 실행하면 직렬 방식으로 실행됩니다 (그래서 이벤트는 창을 닫기 전에 완전히 처리되어야합니다). – Ocelot20
저는 이벤트 리스너가 "직렬"방식으로 실행된다는 것을 확신합니다. 따라서 팝업을 만든 구성 요소의 이벤트 리스너는 PopUpManager 제거 클래스보다 먼저 실행됩니다. [항상 옳은 것은 아니기 때문에 빠른 샘플을 작성하여이를 확인할 수 있습니다.] – JeffryHouser