L'utilisation de l'API est très simple : il suffit de créer un nouvel objet DragManager en définissant l'objet que l'on souhaite déplacer et la zone de limitation :

import ch.capi.display.*;
import ch.capi.geom.*;
 
var lm:Circle = new Circle(100, 100, 75); //x, y, rayon
var dm:DragManager = new DragManager(monClip, lm);

Ensuite, il ne reste plus qu'a mettre en place le comportement de glisser-déposer (drag & drop). Pour cela, il y a les méthodes startDrag et stopDrag comme habituellement :

dm.startDrag(false); //lockCenter
 
//...
dm.stopDrag();

Afin de gagner du temps, une méthode est implémentée pour gérer cela automatiquement :

dm.setDragDropBehaviorEnabled(true, false); //activation, lockCenter

Et voici un petit exemple de ce que ça donne. Pour l'instant, je n'ai implémenté que le cercle basique et le rectangle. Mais il est très facile d'étendre l'API pour coller à n'importe quelle forme moyennant quelques formules mathématiques. Il suffit d'implémenter l'interface IDragDelimiter ! J'en ajouterai au fur et à mesure de mes développements.

Pour ce qui est du code de l'exemple, il est assez court :

import ch.capi.geom.*;
import ch.capi.display.*;
 
//shape delimiter
var c:BasicCircle = new BasicCircle(100, 100, 70);
var r:BasicRectangle = new BasicRectangle(250, 30, 170, 140);
 
//display the shapes
var g:Graphics = this.graphics;
g.lineStyle(2, 0);
c.draw(g);
r.draw(g);
 
var useLockCenter:Boolean = false;
 
//circle manager
var dc:DragManager = new DragManager(clipDragCircle, c);
dc.setDragDropBehaviorEnabled(true, useLockCenter);
 
//rectangle manager
var dr:DragManager = new DragManager(clipDragRectangle, r);
dr.setDragDropBehaviorEnabled(true, useLockCenter);

Voila pour cette petite API. Si quelqu'un a un retour à me faire... ;)