package comp { import flash.events.MouseEvent; import mx.containers.Panel; public class MovablePanel extends Panel { private var _clickedX: Number; private var _clickedY: Number; public function MovablePanel() { super(); } override protected function createChildren():void { super.createChildren(); titleBar.addEventListener(MouseEvent.MOUSE_DOWN, titleBar_mouseDown); } private function titleBar_mouseDown(event: MouseEvent): void { _clickedX = this.mouseX; _clickedY = this.mouseY; stage.addEventListener(MouseEvent.MOUSE_MOVE, titleBar_mouseMove); stage.addEventListener(MouseEvent.MOUSE_UP, titleBar_mouseUp); } private function titleBar_mouseUp(event: MouseEvent): void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, titleBar_mouseMove); } private function titleBar_mouseMove(event: MouseEvent): void { this.setStyle('left', null); this.setStyle('bottom', null); this.setStyle('right', null); this.setStyle('top', null); this.x = parent.mouseX - _clickedX; this.y = parent.mouseY - _clickedY; } } }