я развил код из второго поста, мне именно такой подход не очень нравится, но имхо это лучше чем 100500 левых хендлеров. С учетом того что действия вообщем то однотипные можно определить динамические данные и дальше метода backF ходить не придется. Пример ниже:

Код AS3:
import fl.transitions.Tween;
import fl.transitions.easing.*;
var moveBackX : Tween;
var moveBackY : Tween;
var pointsArr :Array = [point1, point2, point3, point4];
var placeArr :Array = [placeLamp, placeAmpermetr, placeVoltmetr];
var len :int = placeArr.length;
for (var i:int = 0; i < len; i++)
placeArr[i].visible = !visible; // я правда не понял зачем
var objectsArr :Array = [lamp, ampermetr, voltmetr];
len = objectsArr.length;
for (i = 0; i < len; i++)
objectsArr[i].addEventListener(MouseEvent.MOUSE_DOWN, onObjectMouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUpHandler);
function onObjectMouseDownHandler(e:MouseEvent):void
{
e.currentTarget.startDrag();
}
function onStageMouseUpHandler(e:MouseEvent):void
{
var obj:Sprite = e.currentTarget as Sprite;
var index:int = objectsArr.indexOf(obj); // т.к. кодите в иде, то индекс можно было сохранить как св-во мувика, он всеравно динамический, но можно и так.
if (index == -1) return;
var point:Sprite = pointsArr[index]; // спрайты или что там?
var place:Sprite = placeArr[index]; // спрайты или что там?
new Tween(obj, "x", Strong.easeOut, obj.x, point.hitTestPoint(obj.x, obj.y) ? point.x : place.x, 0.5, true);
new Tween(obj, "y", Strong.easeOut, obj.y, point.hitTestPoint(obj.x, obj.y) ? point.y : place.y, 0.5, true);
obj.stopDrag();
}
из всего этого видно что данный подход имеет очевидные плюсы, а вам мало того что пришлось бы руками подписываться на каждый хендлер, так еще и описывать его.