Вот почему при таком подходе, если быстро дергать мышкой, то драг срывается?

Код 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;
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();
_container.name = 'con';
_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);
}
}
private function this_mouseDownHandler(event:MouseEvent):void
{
if (_conteinersArray.indexOf(event.target > 0))
{
trace('good');
this.addEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
this.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
{
trace('up');
this.removeEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
this.removeEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
event.stopPropagation();
}
private function this_mouseMoveHandler(event:MouseEvent):void
{
_target.x = mouseX - _distantion.x;
_target.y = mouseY - _distantion.y;
event.updateAfterEvent();
}
}
}