tu fai un movie clip e in questo movie clip ci metti tutti i pezzi del puzzle (uno per ogni frame)

nel primo frame di questo movie clip scrivi

nome = substring(_name, 2, _name.length);
//ti ricava il numero del pezzo
x = this._x;
y = this._y;
//stabilisce le coordinate iniziali
gotoAndStop(nome);
//va al frame con il pezzo giusto
this.onRelease = this.onReleaseOutside=function () {
stopDrag();
mc = _root["g"+this.nome];
//stabilisce il quadrato giusto su cui
//centrarsi

if (eval(this._droptarget) == mc) {
//se si è sul quadrato giusto da al movie clip le
//stesse coordinate del quadrato

this._x = mc._x;
this._y = mc._y;
} else {
//sennò lo rimette a posto
this._x = this.x;
this._y = this.y;
}
};
this.onPress = function() {
startDrag(this, true);
};

poi metti sullo stage tutte le istanze che ti servono di questo movie clip, se sono 16 pezzi metti 16 istanze di questo movie clip, a queste istanze dai un nome progressivo: p1, p2, p3 e così via

poi fai un quadrato lo trasformi in movie clip, fai altrettante istanze di questo movie clip con il quadrato e ad ognuna dai un nome progressivo g1,g2 e così via

il quadrato deve avere la stessa grandezza del movie clip con i pezzi