Flexでマウスキャプチャ
GUIツールキットには普通、マウスキャプチャの概念があることが多いと思います。コンポーネント上でマウスボタンを押してから離すまでの間、マウスがコンポーネント領域外に出たとしても、同一のコンポーネントに対してマウスイベントが発生し続けるような挙動です。
Flexでこれを実現する方法が分からなかったので、Flexのソースを読んでみたところ、以下のようにsystemManager.getSandboxRoot()を使えば良いみたいです。
private function handleMouseDown(e:MouseEvent):void { var root:DisplayObject = systemManager.getSandboxRoot(); root.addEventListener(MouseEvent.MOUSE_MOVE, handleRootMouseMove); root.addEventListener(MouseEvent.MOUSE_UP, handleRootMouseUp); } private function handleRootMouseMove(e:MouseEvent):void { var p:Point = this.globalToLocal(new Point(e.stageX, e.stageY)); // ... } private function handleRootMouseUp(e:MouseEvent):void { var root:DisplayObject = systemManager.getSandboxRoot(); root.removeEventListener(MouseEvent.MOUSE_MOVE, handleRootMouseMove); root.removeEventListener(MouseEvent.MOUSE_UP, handleRootMouseUp); }