El problema es que ese límite, creo que al hacer sumas con decimales es superado antes de lo que debe. El programa está hecho de modo que coloca el píxel en el límite, y luego cuando lo supera hace lo que dije arriba. Cuando son 5x5 el límite es 371.2. Ocurre esto:
El pixel 1 se colocó en 64, 0
El pixel 2 se colocó en 140.8, 0
El pixel 3 se colocó en 217.6, 0
El pixel 4 se colocó en 294.4, 0
El pixel 5 se colocó en 64, 76.8 <- Mal colocado.
¿Qué puedo hacer para evitar el error? No es sólo para 5x5, debe servir para cualquier número entero digamos.
La parte que interesa está en el fotograma 2:
Código
actions for fotograma 1 PixelesdeLargo = 1; function Variar () { PixelaModificar = "ColordePixel"+Puntero; ColordePixelaModificar = eval(PixelaModificar); // ¿El pixel puede cambiar de color? if (ColordePixelaModificar<1) { // Sí, cambiarlo: set (PixelaModificar, ColordePixelaModificar+1); Col = new Color("Pixel"+Puntero); Col.setRGB(parseInt(0, 16)); SumadePintados = SumadePintados+1; // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica? if (Puntero/PixelesdeLargo == Math.floor(Puntero/PixelesdeLargo) or Puntero>MinPixelInferior) { // Sí, actualizar SumadePintadosNuevos: SumadePintadosNuevos = SumadePintadosNuevos+1; } // ¿El dibujo tiene píxeles donde no había en una hoja más chica... // y son al menos (PixelesdeLargo) píxeles? if (SumadePintadosNuevos>0 && SumadePintados>MinSumadePintados) { DibujoListo = "Sí"; // Darme tiempo de ver el dibujo. // Volver. Puntero = MaxPosiciondePuntero; gotoAndPlay (5); } else { // No, el dibujo es repetido, no mostrarlo y hacer otro: DibujoListo = "No"; Puntero = MaxPosiciondePuntero; } } else { // El pixel no puede cambiar de color, resetearlo: set (PixelaModificar, 0); Col = new Color("Pixel"+Puntero); Col.setRGB(parseInt("FFFFFF", 16)); SumadePintados = SumadePintados-1; // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica? if (Puntero/MaxPosiciondePuntero == Math.floor(Puntero/MaxPosiciondePuntero) or Puntero>MinPixelInferior) { // Sí, actualizar SumadePintadosNuevos: SumadePintadosNuevos = SumadePintadosNuevos-1; } // ¿Hay un pixel anterior? if (Puntero>1) { // Sí, apuntar a ese: Puntero = Puntero-1; // Continuar haciendo el dibujo: DibujoListo = "No"; } else { // No, aumentar tamaño de hoja y reiniciar. DibujoListo = "Sí"; gotoAndPlay (2); } } } actions for fotograma 2 PixelesdeLargo = PixelesdeLargo+1; Pixeles = 0; DistanciaEntrePixeles = 384/PixelesdeLargo; PosicionX = 64-DistanciaEntrePixeles; MaxPosicionXdePixel = 64+DistanciaEntrePixeles*(PixelesDeLargo-1); PosicionY = 0; MaxPosiciondePuntero = PixelesdeLargo*PixelesdeLargo; Puntero = MaxPosiciondePuntero; // Píxeles pintados: SumadePintados = 0; MinSumadePintados = PixelesdeLargo-1; MinPixelInferior = PixelesdeLargo*(PixelesdeLargo-1); // Píxeles pintados que no estaban en hojas de menos píxeles: SumadePintadosNuevos = 0; // Agregar píxeles en blanco: do { Pixeles = Pixeles+1; PosicionX = PosicionX+DistanciaEntrePixeles; if (PosicionX>MaxPosicionXdePixel) { PosicionX = 64; PosicionY = PosicionY+DistanciaEntrePixeles; } trace ("El pixel "+Pixeles+" se colocó en "+PosicionX+", "+PosicionY); attachMovie("mPixel", "Pixel"+Pixeles, Pixeles); setProperty ("Pixel"+Pixeles, _x, PosicionX); setProperty ("Pixel"+Pixeles, _y, PosicionY); setProperty ("Pixel"+Pixeles, _width, DistanciaEntrePixeles); setProperty ("Pixel"+Pixeles, _height, DistanciaEntrePixeles); } while (Pixeles<MaxPosiciondePuntero); stop (); actions for fotograma 3 Variar(); actions for fotograma 4 Variar(); if (DibujoListo == "No") { gotoAndPlay (3); } actions for fotograma 6 gotoAndPlay (3);