Hier eine knappe konzeptionelle Beschreibung:
Ich würde beim Mousebuttondown prüfen, ob ein Objekt geklickt ist und dann zum Verschieben kennzeichnen. Beim Mousebuttonup wird die Kennzeichnung wieder aufgehoben. Während der ganzen Zeit muss Mousemove abgefangen werden und alle zur Zeit gekennzeichneten Objekte werden entsprechend der letzten Mausbewegung verschoben.