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]); } }
} 