본문 바로가기

공부방/Flex

[Flex] 팝업을 띄우고 데이터 교환하기

플렉스에서 팝업에 관해서 가장 많이 나오는 질문중 하나가 팝업을 띄울때 어플리케이션의 데이터를 보내고 싶다거나 팝업이 닫힐때 데이터를 받아서 특정 함수를 실행시키고 싶다거나 하는 것이다. 

이전에 쓴글 2010/02/17 - [Flex] - 커스텀이벤트 (Custom Event) 만들기 / 사용하기 를 보면 어느정도 알수 있지만 정확하게 팝업을 위해서 쓴 글이 아니기 때문에 실제 사용에 힘들어 하는 사람들을 보게 된다.

그래서 간단한 예제로 구현을 해보고자 한다. 

예제를 보면 보낼 데이터에 rinn.kr 이 들어있고 팝업 띄우기를 클릭하면 팝업이 뜨면서 보낸 데이터가 보여진다. 
팝업에 보낼데이터 필드에 들어있는 값이 어플리케이션에도 반영된다. 

팝업으로 데이터를 보낼때에는 팝업컴포넌트의 public 변수에 그냥 값을 넘겨주기만 하면 되고. 팝업에서 데이터를 받을때에는 이벤트에 실어서 날려주면 된다. 

팝업은 팝업을 띄우는 객체의 child로 취급되기 때문에 팝업에서 발생하는 이벤트를 어플리케이션에서 받을 수 있다. 기본적인 이벤트 전파만 이해 하면 사실 간단한 문제다. 


// 뭐든지 소스를 구하게 되면 우선 이해하고 넘어가야겠다.. 한번 구현해 본건데도 참...;;

[popupA.mxml]



	


	
	


	
	



[popupTest.mxml]



	

	
	
		
		
	
	
		
		
	


[PopupEvent.as]
package
{
	import flash.events.Event;
	
	public class PopupEvent extends Event
	{
		public static var POPUP_CLOSE:String = "popupClose";
		
		public var popupData:String;
		
		public function PopupEvent(type:String, popupData:String, bubbles:Boolean=false, cancelable:Boolean=false)
		{
			super(type, bubbles, cancelable);
			this.popupData = popupData;
		}
		
		override public function clone():Event
		{
			return new PopupEvent(type, popupData, bubbles, cancelable);
		}

	}
}

예제 파일 :