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);
}