1. Вы запускаете новый интервал при каждом движении мыши, а старые при этом не убиваются так как вы каждый раз переназначаете id
2. Функция interval будет работать у вас вечно, так как координаты ball не будут равны координатам курсора.
3. Ваши проверки типа this._x > xx лишние.

Код:
function interval (mc, dt) {
var dx = (mc._x - _root._xmouse) / dt;
var dy = (mc._y - _root._ymouse) / dt;
if (Math.abs (dx) < 0.1 and Math.abs (dy) < 0.1) {
clearInterval (id);
id = false;
trace ("stop")
}
mc._x -= dx;
mc._y -= dy;
updateAfterEvent ();
}
this.onMouseMove = function () {
if (!id) {
id = setInterval (interval, 10, ball, 10);
}
};