Hola!, les comento bien como es, la idea es hacer un puzzle dinamico, esto significa que la cantidad de imagenes, y el tamanio de las mismas se genere dinamicamente (esto esta funcionando OK).
Y el movimiento de las fichas funciona OK, pero.... cual es el problema entonces? Simple, no puedo fusionar los dos codigos en uno, cada uno por separado funcionan, pero fusionados no, y hace dias que estoy con esto y no puedo solucionarlo, si alguien me puede dar una mano, y decimre cual es el error voy a estar muy agradecido!
El problema es que no me detecta la funcion onRelease que genero mediante el while (si creo una escena sin actionscript, y hago los cuadrados manualmente, y les seteo las variables, y le pongo el codigo arriba, el puzzle anda los mas bien).
Y me llama la atencion porque justo eso no funciona en el while.

Bueno sin tanto parlateo, les comento, la escena consta de un solo movieclip llamado quad_0 como instancia, para que halla un espacio vacio, para poder mover las fichas, bueno espero que me puedan ayudar, aca les dejo el codigo, salu2 D0M41N.

Código :

stop();
var width_var:Number = 50;
var height_var:Number = 45;
var total_rows:Number = 3;
var total_cols:Number = 6;
var quadnumb:Number = 0;
var total_quads:Number = total_rows * total_cols;
var cols:Number = total_cols;
var rows:Number = total_rows;
var theWidth:Number = width_var;
var theHeight:Number = height_var;
var tmpCols:Number=0;
var tmpRows:Number=0; 
while(tmpCols<cols) 
   {
      tmpRows=0;
      while(tmpRows<rows) {
         quadnumb++;
         var xPos:Number = tmpCols * theWidth;
         var yPos:Number = tmpRows * theHeight;
         this.createEmptyMovieClip("quad_"+quadnumb, this.getNextHighestDepth());
         this["quad_"+quadnumb].loadMovie("quads/img_"+quadnumb+".jpg");
         this["quad_"+quadnumb]._x=xPos;
         this["quad_"+quadnumb]._y=yPos;
         this["quad_"+quadnumb].posCol=tmpCols;
         this["quad_"+quadnumb].posRow=tmpRows;
         this["quad_"+quadnumb].xvargo=xPos;
         this["quad_"+quadnumb].yvargo=yPos;
         with (this["quad_"+quadnumb]) {
      onRelease = function() { if (go!=2) { 
         if (_parent.quad_0.posCol==posCol) {
            if (posRow==_parent.quad_0.posRow1 or posRow==_parent.quad_0.posRow2) {
            xvargo = _parent.quad_0._x;
            yvargo = _parent.quad_0._y;
            go = 1;
            AposCol = _parent.quad_0.posCol;
            AposRow = _parent.quad_0.posRow;
            _parent.quad_0._x = _x;
            _parent.quad_0._y = _y;
            _parent.quad_0.posCol = posCol;
            _parent.quad_0.posRow = posRow;
            posCol = AposCol;
            posRow = AposRow; } }
         if (_parent.quad_0.posRow==posRow) {
            if (posCol==_parent.quad_0.posCol1 or posCol==_parent.quad_0.posCol2) {
            xvargo = _parent.quad_0._x;
            yvargo = _parent.quad_0._y;
            go = 1;
            AposCol = _parent.quad_0.posCol;
            AposRow = _parent.quad_0.posRow;
            _parent.quad_0._x = _x;
            _parent.quad_0._y = _y;
            _parent.quad_0.posCol = posCol;
            _parent.quad_0.posRow = posRow;
            posCol = AposCol;
            posRow = AposRow; } }
            } }
      onEnterFrame = function() {
         if (xvargo==_x and yvargo==_y) { go=1; } else { go=2;
            if (_x<xvargo) { _x+=5; }
            if (_y<yvargo) { _y+=5; }
            if (_x>xvargo) { _x-=5; }
            if (_y>yvargo) { _y-=5; } }
      }
      
            }
         tmpRows++;
      }
      tmpCols++;
   }
   quad_0._x+=width_var;
   var quad:Number = 0;
   while(quad<total_quads) {
   quad++;
   if (this["quad_"+quad]._y == this.quad_0._y) {
   if (this["quad_"+quad]._x == this.quad_0._x) { removeMovieClip(this["quad_"+quad]); } }
   }