ciao ragazzi . . . devo fare un piccolo game x un esame in flash con as3

devo fare una sorta di puzle...
dove ho degli oggetti che scendono e devo metterli in un contenitore

gli oggetti che cadono sono da 1 o 2 pezzi e quelli da 2 devono essere orizontali o verticali.

quando lo metto nel contenitore deve avere una sorta di aggancio ...

se x caso lo metto nel posto sbagliato deve tornare nella posizione iniziale e continuare a scorrere....

qualcuno ha qualche idea?
sa x caso dove posso prendere dei sorgenti?

ho fatto una sorta di codice . . . xro non so perchè mi si genera sempre un elemento... a me serve che si generino 3 tipi di oggetti e che scorrono...

non so piu dove sbattere la testa......

var startX:Number;
var startY:Number;

rosso_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
rosso_mc.addEventListener(MouseEvent.MOUSE_UP, dropIt);

function pickUp(event:MouseEvent):void {
event.target.startDrag(true);
//stato.text = "L'hai preso!";
event.target.parent.addChild(event.target);
startX = event.target.x;
startY = event.target.y;
}
function dropIt(event:MouseEvent):void {
//In caso rilascio il clip ROSSO_MC
event.target.stopDrag();
//Imposto il mio elemento TARGET
var myTargetName:String = "c1";
var myTargetisplayObject = getChildByName(myTargetName);
//stato.text = "Ti è scappato?";

//Se il mio clip ROSSO_MC collide con VERDE_MC
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget) {
//stato.text = "Bravo!";
event.target.removeEventListener(MouseEvent.MOUSE_ DOWN, pickUp);
event.target.removeEventListener(MouseEvent.MOUSE_ UP, dropIt);

// Disabilita il clip filmato come fosse un pulsante
//event.target.buttonMode = false;
event.target.x = myTarget.x;
event.target.y = myTarget.y;
} else {
//se vuoi farlo tornare alle coordinate iniziali utilizza il seguente codice
//event.target.x = startX;
//event.target.y = startY;
}
}
// Abilita il clip filmato come fosse un pulsante
rosso_mc.buttonMode = true;

var startX:Number;
var startY:Number;

rosso_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
rosso_mc.addEventListener(MouseEvent.MOUSE_UP, dropIt);

function pickUp(event:MouseEvent):void {
event.target.startDrag(true);
//stato.text = "L'hai preso!";
event.target.parent.addChild(event.target);
startX = event.target.x;
startY = event.target.y;
}
function dropIt(event:MouseEvent):void {
//In caso rilascio il clip ROSSO_MC
event.target.stopDrag();
//Imposto il mio elemento TARGET
var myTargetName:String = "c1";
var myTargetisplayObject = getChildByName(myTargetName);
//stato.text = "Ti è scappato?";

//Se il mio clip ROSSO_MC collide con VERDE_MC
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget) {
//stato.text = "Bravo!";
event.target.removeEventListener(MouseEvent.MOUSE_ DOWN, pickUp);
event.target.removeEventListener(MouseEvent.MOUSE_ UP, dropIt);

// Disabilita il clip filmato come fosse un pulsante
//event.target.buttonMode = false;
event.target.x = myTarget.x;
event.target.y = myTarget.y;
} else {
//se vuoi farlo tornare alle coordinate iniziali utilizza il seguente codice
//event.target.x = startX;
//event.target.y = startY;
}
}
// Abilita il clip filmato come fosse un pulsante
rosso_mc.buttonMode = true;