Rivexe я опять внимания не обратил))) Спасибо!
Не знаю на сколько правильно ( очень надеюсь , что правильность прокомментируют ) но работает.

Код AS3:
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
public class Drag extends Sprite
{
private var _container:Sprite;
private var _spriteArray:Vector.<Sprite>;
private var _conteinersArray:Vector.<Sprite>;
private var _distantion:Point;
private var _target:Sprite;
private var _maxX:int;
private var _maxY:int;
private var _minX:int;
private var _minY:int;
public function Drag()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(event:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
_conteinersArray = Vector.<Sprite>([]);
this.addEventListener(MouseEvent.MOUSE_DOWN, this_mouseDownHandler);
_container = new Sprite();
_conteinersArray.push(_container);
super.addChild(_container);
var circle:Sprite;
_spriteArray = Vector.<Sprite>([]);
for (var i:int = 0; i < 10; i++)
{
circle = new Sprite();
circle.graphics.beginFill(Math.random() * 0xf6f6f6);
circle.graphics.drawCircle(Math.random() * stage.stageWidth, Math.random() * stage.stageHeight, 30);
circle.graphics.endFill();
_spriteArray.push(circle);
_container.addChild(_spriteArray[i] as DisplayObject);
}
_maxX = this.width;
_maxY = this.height;
_minX = this.width - this.width;
_minY = this.height - this.height;
}
private function this_mouseDownHandler(event:MouseEvent):void
{
if (_conteinersArray.indexOf(event.target > 0))
{
this.addEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
_target = event.target.parent as Sprite;
_distantion = new Point(event.localX, event.localY);
}
}
private function this_mouseUpHandler(event:MouseEvent):void
{
this.removeEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
}
private function this_mouseMoveHandler(event:MouseEvent):void
{
if (mouseX > _maxX || mouseX < _minX || mouseY > _maxY || mouseY < _minY)
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
this.removeEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
_target = null;
_distantion = null;
return;
}
_target.x = mouseX - _distantion.x;
_target.y = mouseY - _distantion.y;
event.updateAfterEvent();
}
}
}