リサイズ可能なポップアップウィンドウ

リサイズ可能なポップアップウィンドウのサンプルを作ってみました。
普通にマウスのイベントを拾って、マウスのドラッグを処理するだけです。
画面真ん中に表示される、ポップアップウィンドウの右下 10 pixel をドラッグすることで、サイズ変更できます。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication 
	xmlns:mx="http://www.adobe.com/2006/mxml"
	creationComplete="creationComplete()" 
>
	<mx:Script>
		<![CDATA[
			import mx.containers.TitleWindow;
			import mx.managers.PopUpManager;
			
			private var _window:TitleWindow;
			
			private function creationComplete():void {
				_window = new TitleWindow();
				_window.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
				PopUpManager.addPopUp(_window, this);
				PopUpManager.centerPopUp(_window);
			}
			private function handleMouseDown(event:MouseEvent):void {
				if (Math.abs(_window.width - event.localX)<10 && 
					Math.abs(_window.height - event.localY)<10) {
					systemManager.addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove);
					systemManager.addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
				}
			}
			private function handleMouseMove(event:MouseEvent):void {
				_window.width = Math.max(50, event.stageX - _window.x);
				_window.height = Math.max(50, event.stageY - _window.y);
				_window.invalidateDisplayList();
			}
			private function handleMouseUp(event:MouseEvent):void {
				systemManager.removeEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove);
				systemManager.removeEventListener(MouseEvent.MOUSE_UP, handleMouseUp)
			}
		]]>
	</mx:Script>
</mx:WindowedApplication>

注意することととしては、サイズ変更対象に対して MOUSE_MOVE と MOUSE_UP イベントハンドラを登録せずに、SystemManager に登録します。これは、サイズ変更対象の外側にマウスが移動した場合でもイベントを拾えるようにするためです。