Потратил два часа жизни, получился вот такой примерчик
main.rar
Класс Main

Код AS3:
package {
import components.CreateWindow;
import events.CommonEvent;
import flash.display.Sprite;
import flash.events.*
import flash.text.*
public class Main extends Sprite {
public var createWindow:CreateWindow;
public function Main(){
init()
}
private function init():void {
createWindow = new CreateWindow()
addChild(createWindow)
//получаем события из CreateWindow
createWindow.addEventListener(CommonEvent.DRAG_WINDOW_DOWN, WinDragStart);
createWindow.addEventListener(CommonEvent.DRAG_WINDOW_UP, WinDragStop);
createWindow.addEventListener(CommonEvent.WINDOW_REMOVE, RemoveWindow);
}
private function WinDragStart(e:CommonEvent):void{
trace("Drag_Start")
var val:uint = e.t
e.target.startDrag()
e.target.alpha = Number("0."+val)
}
private function WinDragStop(e:CommonEvent):void{
trace("Drag_Stop")
var val:uint = e.t
e.target.stopDrag()
e.target.alpha = Number(val)
}
private function RemoveWindow(e:CommonEvent):void{
trace("Remove")
removeChild(createWindow);
}
}
}
Класс CreateWindow в пакете components

Код AS3:
package components {
import events.CommonEvent;
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.*
public class CreateWindow extends Sprite {
private var container:Sprite;
private var line:Shape;
private var line2:Shape;
private var closeWindow:CloseWindow;
public function CreateWindow(){
closeWindow = new CloseWindow()
line = new Shape()
line.graphics.lineStyle(2,0xFFFFFF)
line.graphics.lineTo(10, 10);
line.x = 85
line.y = 5
////////////line2
line2 = new Shape()
line2.graphics.lineStyle(2,0xFFFFFF)
line2.graphics.lineTo(10, 10);
line2.rotation = 90
line2.x = 95
line2.y = 5
container = new Sprite()
container.graphics.beginFill(0xCCFF00);
container.graphics.drawRect(0, 0, 100, 100);
container.graphics.endFill()
container.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
container.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
closeWindow.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownRemove);
addChild(container)
addChild(closeWindow)
addChild(line)
addChild(line2)
}
private function mouseDownHandler(e:MouseEvent):void{
//диспатчим в main
dispatchEvent(new CommonEvent(CommonEvent.DRAG_WINDOW_DOWN, /*параметр прозрачности окна*/5));
}
private function mouseUpHandler(e:MouseEvent):void{
//диспатчим в main
dispatchEvent(new CommonEvent(CommonEvent.DRAG_WINDOW_UP, /*параметр прозрачности окна*/1));
}
private function mouseDownRemove(e:MouseEvent):void{
//диспатчим в main
dispatchEvent(new CommonEvent(CommonEvent.WINDOW_REMOVE, 0));
}
}
}
Класс CloseWindow в пакете components

Код AS3:
package components {
import flash.display.Sprite;
import flash.display.Shape;
public class CloseWindow extends Sprite {
private var container:Shape;
public function CloseWindow(){
container = new Shape()
container.graphics.beginFill(0x000000);
container.graphics.drawRect(80, 0, 20, 20);
container.graphics.endFill()
addChild(container)
}
}
}
Класс CommonEvent в пакете events

Код AS3:
package events{
import flash.events.Event;
public class CommonEvent extends Event{
private var _t:uint;
//храним имена всех событий
public static const DRAG_WINDOW_DOWN:String = "drag_window_down";
public static const DRAG_WINDOW_UP:String = "drag_window_up";
public static const WINDOW_REMOVE:String = "window_remove";
public function CommonEvent(type:String, /*bubbles:Boolean = false, cancelable:Boolean = false,*/ val:uint) {
super(type, /*bubbles, cancelable,*/ true, false);
//параметр прозрачности окна
_t = val;
}
public function get t():uint {
return _t;
}
}
}
Исходник принципиально не выложил, попробуйте сперва сами разобраться

Что не ясно спрашивайте.